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.