Non penso che ci sia un rischio per una vulnerabilità di reindirizzamento aperto, poiché qualsiasi cosa dopo il ?
verrà interpretata come parametri di query e non come parte del percorso. Ma dovresti comunque cambiare il tuo codice, poiché non ti assicuri che param
sia effettivamente codificato tramite URL. Fai ciò con urlencode()
:
header('Location: ../page.php?param='.urlencode($param));
Tuttavia, se utilizzi una versione di PHP precedente alla 5.1.2, sei vulnerabile all'iniezione di intestazione (vedi documentazione ). Inviando un param
che include una nuova riga un utente malintenzionato potrebbe impostare più intestazioni (o semplicemente impostare di nuovo l'intestazione della posizione, sovrascrivendo il vecchio valore). L'utilizzo di urlencode()
corregge che dal momento che \n
sarebbe codificato come %0A
.
L'intero costrutto potrebbe non essere necessario - forse puoi controllare sia $_POST
che $_GET
per param
in page.php
?