¿Hay alguna situación en la que se pueda realizar un ataque XSS a través de la variable PHP $_SERVER['REQUEST_URI']
? Para aquellos que no están familiarizados con él: contiene la URL completa utilizada para acceder a ese sitio web, sin el nombre de dominio y con algunos caracteres especiales codificados .
Por ejemplo, toma este pedazo de código. Ya tenemos un <
, y ni siquiera estamos usando "
:
echo '<form action=' . $_SERVER['REQUEST_URI'] . ' method="post"></form>';
Si visito localhost/myscript.php?foo onhover=alert(1)
, el resultado es:
<form action=/myscript.php?foo%20onhover=alert(1) method="post">
- ¿Hay alguna forma de inyectar un espacio? Intenté
+
y caracteres similares, pero no funcionó. - Si hay una forma, ¿también sería posible si se usaran comillas para la acción?
- Si no es posible, ¿puedes pensar en algún escenario en el que
$_SERVER['REQUEST_URI']
pueda usarse para realizar un ataque XSS? ¿O cualquier otro ataque para el caso?
// editar: para resumir las respuestas (en caso de que alguien no lea todos los comentarios): con los navegadores actuales, no parece que sea posible un ataque a través de REQUEST_URI
. Pero no se debe confiar en el navegador para sanear las entradas de los usuarios, por lo que REQUEST_URI
aún debe estar en el lado del servidor.