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
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.
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.
Aleatorizar el nombre del elemento del formulario es una idea interesante. Gracias por el enlace. – ironsam
- 1. Symfony 2 Desactivar la protección CSRF ficha en ajax presentar
- 2. ¿Cómo administrar una sesión por ficha?
- 3. Obtener índice/ID de la ficha del navegador
- 4. ¿es la cookie de sesión lo suficientemente segura como para almacenar el ID de usuario?
- 5. Pregunta de protección CSRF
- 6. httpservletrequest - crear nueva sesión/cambiar sesión Id
- 7. Fichas CSRF: ¿cómo implementarlas correctamente?
- 8. CodeIgniter ajax CSRF problema
- 9. botones de ficha personalizados
- 10. Ficha secreta de rieles
- 11. expresión regular de PHP para la validación de contraseña segura
- 12. Cómo matar una sesión o ID de sesión (ASP.NET/C#)
- 13. Caducidad de la cookie segura de Tornado (también conocida como cookie de sesión segura)
- 14. Recuperar ID de sesión con Spring Security
- 15. almacenar ID de usuario en la sesión
- 16. obtener ID de sesión en ASP.Net
- 17. Leer ID de sesión usando Javascript
- 18. CSRF token generation
- 19. ficha de C Constantes/Macros
- 20. Notepad ++ Configuración de la ficha
- 21. Color de la ficha Notepad ++
- 22. Envío de solicitud POST a acción segura
- 23. Cómo almacenar credenciales de manera segura por sesión en Flask
- 24. Problema de token de CSRF con CodeIgniter
- 25. ¿Puedo hacer que mi cookie ASP.NET FormsAuthentication sea más segura al asociarla con la ID de la sesión?
- 26. Seguridad de Windows Validación de inicio de sesión personalizado
- 27. Codeigniter CSRF: cómo funciona
- 28. Prevención de CSRF al usar RequestFactory de GWT
- 29. Tener un ID de inicio de sesión y un ID de persona en SQL
- 30. Ficha DataGrid columna de omisión de navegación
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