Newsgroup: it.comp.www.php
Titolo: form autorinnovantesi

Ho un form con dei campi.
Vorrei evitare che qualcosa possa inviare delle query usando un post e
impostando i campi del form.
Ho visto che alcuni siti usano cambiare continuamente l'url dell' "action"
o i nomi dei campi field.
Come posso ottenere questo risultato con PHP?
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Come posso ottenere questo risultato con PHP?
non ho capito
Francesco Mazzi
Webmaster di AltroPC.it - 
http://www.altropc.it
 
Staff di E-Xoopport - 
http://www.e-xoopport.it

 non ho capito
poniamo che io abbia una pagina con un form con "action=alfa.php" e 
campo di nome "alfa"
p.e. un altro sito potrebbe indirizzare una richiesta alla pagina 
alfa.php impostando il campo "alfa" a "parola"
oppure
un programmatore potrebbe fare un programmino che invia a 
"alfa.php" una serie di variabili con cui imposta di volta in volta 
il campo "alfa".
Io vorrei evitare ciň e consentire l'esecuzione solo se proviene da 
"alfa.php".
-- 
http://midiquiz.altervista.org
http://interno.altervista.org

 
Usare l'header Referrer?
David
-- 
Linux Registered User #334216
Get FireFox! >> 
http://www.spreadfirefox.com/?q=affiliates&id=48183&t=1
Staff >> 
http://www.debianizzati.org
 <<

> > alfa.php impostando il campo "alfa" a "parola"
POST[]
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

> > alfa.php impostando il campo "alfa" a "parola"
$_POST[]


 David


 
if ($_SERVER['HTTP_REFERER'] == "
http://www.miosito.it/alfa.php
") {
	... (accesso consentito);
}
else {
	echo "Accesso negato.<br />";
}
Questo, però, non è un metodo "sicuro". Infatti, è possibile modificare
gli header inviati dal browser, e falsificare così il Referer.
Potresti utilizzare questo metodo insieme a controlli vari... che so,
poniamo questo esempio:
- la pagina da cui tu vuoi provengano i dati si chiama alfa.php;
- la pagina che deve elaborare i dati la chiami beta.php;
Puoi:
1) mettere il codice di sopra in beta.php;
2) aggiungere altri controlli _contemporanei_ a questo.
Per quanto riguarda il punto 2... la prima cosa che mi viene in mente,
_non modificabile da utente_ è la creazione di dati sul server.
Potresti, per esempio, prendere il PHPSESSID, creare un file con quel
nome (una cosa tipo PHPSESSID.txt... dove PHPSESSID=ab4523f232...).
Quindi, in beta.php, controlli se il Referer è alfa.php, e in più
controlli se il file PHPSESSID.txt esiste sul server. Se esiste (non c'è
bisogno tu scriva nulla), vuol dire che la pagina alfa.php è stata
chiamata correttamente, quindi cancelli il file stesso e procedi alle
tue operazioni. Perché cancellare il file? Perché se tu lo lasciassi,
basterebbe _una sola_ chiamata ad alfa.php (che, quindi, creerebbe il
file), e poi si potrebbero fare diverse chiamate a beta.php, mandando
anche dati fasulli e/o modificati.
Questo è quello che mi è appena venuto in mente... volendo potresti
anche lavorare con le sole sessioni... non conoscendole benissimo, però,
non so dirti se c'è un qualche modo di "bucarle" (magari proprio
attraverso il PHPSESSID?)...
Se hai bisogno di altri chiarimenti (o qualcuno ha soluzioni migliori),
postate pure... :)


Basta semplicemente creare in alfa.php una variabile di sessione, per
es $_SESSION[check] = 'ok' e poi verificare in beta.php che
$_SESSION[check] == 'ok'. Se è così unset( $_SESSION[check]) e
proseguo, altrimenti exit(0). Senza scomodare il filesystem :P
scusa lo pseudocodice terribile, ma sono anche a fine giornata...
g4b0
