Estoy trabajando en una aplicación completamente ajax impulsado por que todas las solicitudes pasan a través de lo que básicamente equivale a un controlador principal que, en sus huesos desnudos, se ve algo como esto:¿Es suficiente una comprobación del servidor de encabezado X-Requested With para proteger contra un CSRF para una aplicación impulsada por ajax?
if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
fetch($page);
}
¿Es esta generalmente suficiente para proteger contra falsificaciones de solicitudes entre sitios?
Es bastante inconveniente tener un token rotativo cuando no se actualiza toda la página con cada solicitud.
Supongo que podría pasar y actualizar el token único como una variable javascript global con cada solicitud, pero de alguna manera se siente torpe y parece intrínsecamente inseguro de todos modos.
EDITAR - Quizás un token estático, como el UUID del usuario, sería mejor que nada?
EDIT # 2 - Como The Rook señaló, esta podría ser una pregunta desgarradora. He leído especulaciones en ambos sentidos y escuché rumores lejanos sobre versiones anteriores de flash que pueden explotarse para este tipo de travesuras. Como no sé nada de eso, estoy ofreciendo una recompensa para cualquiera que pueda explicar cómo esto es un riesgo de CSRF. De lo contrario, lo estoy dando a Artefacto. Gracias.
para el registro Artefacto era correcto. Debe leer el manual de seguridad del navegador en lugar de preguntar SO. Muchas de las respuestas sobre SO son incorrectas, especialmente para temas de división de cabello como este. – rook
Hubo algunas [vulnerabilidades] (http://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_Flash) en versiones anteriores de flash. Sin embargo, para los usuarios que realmente están ejecutando estas versiones anteriores de Flash, diría que los ataques de CSRF son el menor de sus problemas cuando se enfrentan con vulnerabilidades de ejecución de código arbitrario. – Artefacto
http://stackoverflow.com/questions/17478731/whats-the-point-of-the-x-requestted-with-header | http://security.stackexchange.com/questions/23371/csrf-protection-with-custom-headers-and-without-validating-token –