XSS está funcionando en mi URL. ¿Como lo detengo?

-1

Entonces mi URL se ve así:

www.example.com/id?=15

Mi HTML es esta parte:

<form action="id?=$someidnum"> </form>

Cuando le hago esto a mi url:

www.example.com/id?=15"onclick="alert();"

y haga clic en mi página funciona. Hice una investigación sobre XSS y pude protegerme de los formularios de texto y demás. Sin embargo, ¿cómo puedo evitar que salga de la URL?

Yo uso PHP como idioma del servidor.

    
pregunta apples 21.05.2017 - 22:51
fuente

3 respuestas

3

Exactamente de la misma manera que para todas las demás entradas: validación de entrada rigurosa y escape correcto de la entrada cuando se devuelve el eco.

Para ser un poco educado, creo que debería leer OWASP arriba 10 . Veo una vulnerabilidad de enumeración que acecha allí con el identificador presumiblemente auto-incremental

    
respondido por el Tobi Nary 21.05.2017 - 22:55
fuente
1
  

¿Cómo puedo evitar que salga de la URL?

No importa cuál sea la fuente. El fregadero importa.

En su caso, el sumidero es un atributo de doble comilla. Un valor suministrado por el usuario se puede imprimir de forma segura en un atributo HTML de doble cita mediante HTML, escapando de todas las comillas dobles. Por lo tanto, su fragmento estaría seguro al reemplazar todas las apariciones de " con &quot; en la variable $someidnum .

En PHP, simplemente puede pasar la variable a través de htmlspecialchars() que de forma predeterminada codifica < , > , & y " .

    
respondido por el Arminius 21.05.2017 - 23:02
fuente
1

La prevención de XSS se realiza en el lado del servidor. Hay muchas funciones integradas en PHP para filtrar variables contra XSS, una de ellas es htmlentities() .

También evite poner variables en action="" en formularios. Una forma de hacerlo es:

<form action="#"> </form>
    
respondido por el 4 R4C81D 21.05.2017 - 22:58
fuente

Lea otras preguntas en las etiquetas