¿La prevención CSRF también previene el ataque XSS reflejado?

7

Lo que entiendo sobre el XSS reflejado es

  

... Cuando una aplicación web es vulnerable a este tipo de ataque, lo hará   pase la entrada no validada enviada a través de las solicitudes al cliente ... [1]

Suponiendo que mi aplicación web tiene una validación CSRF en el servidor que busca un token CSRF válido para todas las solicitudes. Dará el error adecuado si recibe cualquier solicitud que no contenga el token CSRF (este error es una cadena simple, no tiene vectores de ataque). En aras de la integridad, digamos también que tengo las medidas de seguridad adecuadas para evitar que el token CSRF sea robado o adivinado.

Por lo tanto, es seguro asumir que los tokens CSRF también evitan el ataque XSS reflejado porque ambos son verdaderos:

  1. El servidor no refleja nada si el token CSRF no está presente.
  2. El atacante no puede tener o adivinar el token CSRF.
pregunta mg007 27.08.2014 - 10:08
fuente

2 respuestas

9

La respuesta es generalmente sí, si el valor solo se refleja si se proporciona un token CSRF válido: el usuario solo puede "atacar" a sí mismo en esta instancia.

Sin embargo, si se genera un formulario que codifica correctamente la salida a una página que contiene un token CSRF pero luego ese formulario se envía a una página que no codifica correctamente la salida, entonces su sitio sigue siendo vulnerable.

por ejemplo Página original (una solicitud GET, que normalmente no está sujeta a tokens CSRF debido a la falta de efectos secundarios, solo POST deben causar efectos secundarios): -

www.example.com/displayForm.php?name=<script>alert('xss')</script>

contiene

<input type="hidden" name="csrfToken" value"123456" />
<input type="hidden" name="name" value="&lt;script&gt;alert(&#039;xss&#039;)&lt;/script&gt;" />

Sin embargo, cuando esta página se envía mediante POST, name se imprime sin codificar:

<body>

Hello <script>alert('xss')</script>.

</body>
    
respondido por el SilverlightFox 27.08.2014 - 11:16
fuente
1

Las páginas de error también pueden tener vulnerabilidades XSS reflejadas, especialmente cuando cualquier rastreo de error incluye parámetros de entrada. Si se sirve una página de error vulnerable cuando el token CSRF no está presente, entonces su protección CSRF no impide que XSS reflejado.

    
respondido por el Mike Samuel 27.08.2014 - 15:29
fuente

Lea otras preguntas en las etiquetas