2009-02-05 21 views
7

En asp.net estoy implementando un IHttpModule para mitigar los ataques de CSRF. Inyecta en la respuesta html un parámetro de formulario oculto con el asp.net SessionID en GET. En POST, comprueba para asegurarse de que el valor del parámetro oculto coincide con el SessionID actual. Hasta donde yo sé, la única forma de obtener el valor de SessionID es desde la cookie, que no puede ser leída o determinada por el sitio malicioso. ¿Hay algo que esté pasando por alto?CSRF Ficha de validación: id de sesión segura?

Respuesta

8

Este enfoque es correcto. Debe asegurarse de que todas las acciones disponibles a través de una operación GET sean "seguras" (lo cual es la mejor práctica de todos modos), ya que está aplicando su protección XSRF solamente a POST.

Para obtener un seguro adicional, puede usarlo en GET también (al agregar un parámetro de URL a todos sus enlaces y verificarlo en cada solicitud de GET), pero es engorroso.

Si es demasiado paranoico, puede elegir un número aleatorio diferente para la ID alternativa. Esto lo protegería incluso si un navegador hace incorrectamente que su cookie de sesión sea accesible para algún Javascript hostil en otro sitio. Cuando se crea una sesión, elija otro gran número aleatorio y guárdelo en su sesión.

+0

Probablemente no me preocupe por los GET por ahora, ya que no es válido (pero obviamente es posible) que http cambie el estado con ellos. Mientras mantengamos esa convención/estándar, deberíamos estar bien. Puedo considerar el uso de un valor que no sea el SessionID para una seguridad adicional como mencionaste, gracias. – ironsam

6

Lo ideal es que quieras usar algo que no sea ID de sesión, pero básicamente eso es todo. OWASP sugiere usar un nombre de elemento aleatorio que se almacena en la sesión del usuario. De esta forma, un atacante ni siquiera podría forjar el campo oculto correcto.

http://www.owasp.org/index.php/Top_10_2007-A5#Protection

+0

Aleatorizar el nombre del elemento del formulario es una idea interesante. Gracias por el enlace. – ironsam

Cuestiones relacionadas