Newsgroup: it.comp.www.php
Titolo: Impedire accesso diretto alle pagine php

Ciao a tutti.
C'è un sistema per impedire che un utente, inserendo nella barra
dell'indirizzo un url tipo 
http://www.miosito.it/cancella.php?id=10
,
possa utilizzare il contenuto dello script (in questo caso cancella.php)
senza seguire il percorso regolare?
Se il sito prevede la registrazione posso utilizzare una variabile di
sessione per controllare se ha fatto il login, ma se l'accesso diretto
avviene *dopo* aver fatto il login?
Grazie in anticipo a tutti
Nando
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
Assegna dei livelli/permessi agli utenti, quindi quando confermi la 
login, oltre alle solite variabili si sessione crei anche delle 
variabili "permessi" ed esegui i controlli su esse.
-- 
Mauro
------------------------------
Be Happy: drink Beer!
http://www.birraiolo.it
------------------------------

 variabili "permessi" ed esegui i controlli su esse.
-- 


 senza seguire il percorso regolare?
Dunque, se questo č il metodo che usi č sbagliato in partenza.
Tanto per cominciare il parametro lo passi via POST e non via GET.
Inoltre dovresti fare un passaggio in piů.
Tu parti dalla pagina con l'elenco delle cose da cancellare.
Ma qui non ci metti il link che hai scritto tu, ma un bel form html con "id"
come campo hidden. Il tutto via POST.
<form method='post' action='cancella.php'>
    <input type='hidden' name='id' value='10'>
    <input type='submit' value='cancella'>
</form>
A questo punto "cancella.php" riceve "id", fa la cancellazione e ridirige
l'output su un'altra pagina con un messaggio di qualche tipo.
In questo modo "cancella.php" non puň essere richiamata manualmente perchč i
parametri devono arrivare via POST e non via GET.
Se poi devi anche gestire il login, allora dovrai verificare IN OGNI PAGINA
che l'utente sia loggato e valido, verificando i cookie/sessioni (o come hai
fatto, non so).
Ciao
Marco


Oltre al consiglio di marco napulitano (passare la variabile via post..
anche se non impedisci molto, basta crearsi in locale il form con gli stessi
parametri) non capisco una cosa.
Se dai il permesso giusto ad un utente significa che gli dai "fiducia" nel
fare quella operazione. Quindi poco importa se lo fa tramite url diretto o
tramite un tuo link... lo potrebbe fare comunque!
Se invece "non dovrebbe" avere accesso agli altri id diversi da 10, dovresti
fare un controllo incrociato.
Non so quello che stai facendo, ma per esempio, se stai facendo un guestbook
e vuoi che un utente possa cancellare SOLO il suo messaggio (di id=10),
nella pagina cancella.php dovresti mettere il controllo:
if ($autoredelmessaggio!=$nomedisessione) {
die();
}
oppure non so... dovremmo saperne di piů.
ciao,
Luca(riello)

 parametri) non capisco una cosa.
Questo è un altro problema.
Ma basta fare un controllo dell'indirizzo di provenienza dei dati e ti
tuteli da post esterni al sito.
Ciao
Marco

 senza seguire il percorso regolare?
stai affrontando il problema dalla parte sbagliata: la soluzione NON è 
cercare di impedire i get hack (se ne è parlato a lungo in passato, in 
sostanza è impraticabile se non impossibile), ma verificare SEMPRE cosa 
ottieni dalle variabili GPS (Get-Post-Session), in quanto 
instrinsecamente insicure e potenzialmente alterabili da utenti maliziosi.
In altre parole: cercare di impedire che un utente possa mettere alla 
variabile $id il valore che pare a lui è una lotta contro i mulini a 
vento. Sei tu che programmaticamente ti devi accertare PRIMA di usarla 
che $id contenga un valore plausibile, fra quelli che ti aspetti.
-- 
Fabrizio "Hermooz" Ermini

 Nando
spero diesserti di aiuto....
ciao
maxxe

 Nando
Io semplicemente gestirei con le sessioni, se l'utente è loggato può fare
alcune cose altrimenti no. Se è loggato gli assegni i permessi che stanno
nel campo a lui associato nel database utenti. Con le sessioni hai +
controllo perché forzi tu una certa cronologia nelle operazioni.
CIAO

 wrote in message
news:co7m6a$j3o$
1...@news.tiscali.fr



 wrote in message
news:30p6dmF...@uni-berlin.de

-- 


 wrote in message
news:0c57bbb11cd0f1b5929...@mygate.mailgate.org



ciao,
Luca(riello)


http://www.help32.com/index.php?adm=menu-chisiamo&sub=2&ch=4
ci sono usati dei trucchi del genere
login.php
compresi dei controlli (lo so spammo e nn si bovrebbe fare, pero' essendo
gpl)
in futuro pubblico altri moduli (un po completi)
nn lavoro gratis, quello che mi interessa e'  avere una base (GPL) su cui
lavorare
e condividere con altri sviluppatori, i $ ho intenzione di chiederli per
fare delle personalizzazioni
e di condividere con altri i sorgenti (abbattimento dei costi di sviluppo
per l'utente)
nn ci devo diventare ricco.


 pagina.
Mi spieghi un motivo sensato per cui un utente non può richiedere una 
pagina protetta con un parametro valido dopo che si è autenticato?
Guarda che i bookmark esistono in tutti i browser e c'e' gente che li 
usa e li trova anche comodi.
PS: evita il top quoting, per favore.
Bye!
-- 
Fabrizio "Hermooz" Ermini

 usa e li trova anche comodi.
Io di motivi per fare pagine WEB "modali" ne vedo parecchi, esattamente
come avviene nelle applicazioni non-WEB.
Il WEB e' stato concepito come sistema per la navigazione nella
documentazione, dove c'e' un rapporto uno a uno tra URL e documento
informativo.
Ma se consideri applicazioni piu' articolate, non puoi dare all'utente
la possibilita' di richiamare le funzioni di un programma in un
ordine qualsiasi semplicemente specificando il nome della funzione e i
parametri: anche se i parametri sono formalmente corretti, sarebbe un
gran disastro per la logica del programma! Il disastro e' dovuto a due
effetti collaterali che io sintetizzo cosi': le variabili globali e lo
stack delle chiamate delle funzioni.
Le variabili globali si possono simulare con le variabili memorizzare
nella sessione. Tuttavia se dai la possibilita' all'utente di richiamare
le funzioni del programma in un ordine qualsiasi, devi diventare matto
per gestire la corretta istanziazione di queste variabili globali. E
allora o impesti il programma di flag nella sessione, oppure rinunci e
lasci il tuo programma WEB in balia della sorte.
Simulare uno stack di chiamate e' piu' difficile, ma possibile.
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it

 lasci il tuo programma WEB in balia della sorte.
Non sei tu che lasci questa possibilità all'utente: ce l'ha, e non 
gliela puoi togliere se non facendo un sacco di fatica. Se ne fa molta 
meno a costruire l'applicazione in modo da essere insensibile all'ordine 
di navigazione. Basta svilupparla tenendo presenti le caratteristiche 
dell'ambiente in cui gira, invece che pretendere di fare le stesse cose 
che si fanno in visual basic...