Salve a tutti, so che questo quesito potrà sembrare a molti una "paranoia" ma mi incuriosce la questione. Ho la seguente situazione:
Pagina con form con alcuni campi hidden necessari all'elaborazione corretta nella pagina action.
Se io mi salvassi in locale la pagina col form e modificassi i campi hiddden e inviassi il modulo, la pagina action non dovrebbe fare le elaborazioni in modo corretto (ovviamente immagino il caso di un utente particolarmente rompiscatole) fino ad arrivare all'incoerenza del database.
Per ovviare a questo problema ho pensato di fare una funzioncina da mettere in ogni pagina action che controlla il referrer.
La funziona è questa:
Nella chiamata a funzione io passo l'url completo della pagina e la pagina a cui fare il redirect in caso di errore.Codice PHP:
function checkReferrer($fStrUrl,$fStrRedirect){
$strReferrer=trim($_SERVER['HTTP_REFERER']);
if (strpos($strReferrer,$fStrUrl)!==0){
header("Location: " . $fStrRedirect);
exit();
}
}
Uso una strpos e non una strcmp perché altrimenti dovrei reperire in qualche modo i parametri della querystring (se c'è) della pagina form e questo mi rende meno sicuro lo script (se passo il parametro tramite campo hidden sono punto e a capo).
Qui ho un discreto livello di sicurezza, vengono accettate soltanto pagine provenienti dal mio sito quindi con url:
www.miodomino.ext/path
Ora mi chiedo, è possibile che un utente chiami il suo pc invece che localhost, www.miodominio.ext e costruisca una struttura di path esattamente come quella che ho sul sito in modo che quando richiami la pagina form precedentemente salvata abbia in locale lo stesso path mio?
Cosa succede in questo caso? Il browser a quale dei due domini reindirizza?
Spero di avervi incuriosito! Putroppo questo test non posso farlo da solo in quanto per qualche strano motivo se nella barra degli url uso http://nomepc invece che http://localhost il server non funziona più! C'è qualcuno interessato alla cosa che lo farebbe al mio posto?
Grazie a tutti