C'è qualche situazione in cui un attacco XSS può essere eseguito tramite la variabile $_SERVER['REQUEST_URI'] di PHP? Per chi non lo conosce: contiene l'URL completo utilizzato per accedere a quel sito Web, senza il nome di dominio e con alcuni caratteri speciali codificati .
Ad esempio, prendi questo pezzo di codice. Abbiamo già < e non stiamo nemmeno utilizzando " :
echo '<form action=' . $_SERVER['REQUEST_URI'] . ' method="post"></form>';
Se visito localhost/myscript.php?foo onhover=alert(1) il risultato è:
<form action=/myscript.php?foo%20onhover=alert(1) method="post">
- C'è un modo per iniettare uno spazio? Ho provato
+e caratteri simili, ma non ha funzionato. - Se c'è un modo, sarebbe anche possibile se le virgolette fossero usate attorno all'azione?
- Se non è possibile, puoi pensare a uno scenario in cui
$_SERVER['REQUEST_URI']potrebbe essere utilizzato per eseguire un attacco XSS? O qualsiasi altro attacco per questo?
// edit: per riassumere le risposte (nel caso qualcuno non legga tutti i commenti): con i browser correnti, non sembra che sia possibile un attacco tramite REQUEST_URI . Ma non bisogna fare affidamento sul browser per disinfettare l'input dell'utente, quindi REQUEST_URI dovrebbe essere ancora disinfettato dal lato server.