Alternativa a los tokens anti-CSRF para solicitud AJAX (Política del mismo origen)

7

Estoy trabajando en un sitio web PHP completamente basado en AJAX (a través de jQuery). Es una página única en la que AJAX realiza todas las solicitudes.

En relación con la protección contra CSRF, he encontrado el problema de tener que incluir manualmente el token en cada solicitud que realizo, lo cual es extremadamente tedioso e incómodo. Buscando una solución alternativa a los tokens, leí sobre SOP (Política de Mismo Origen) en relación con las solicitudes de AJAX. Si lo entendí bien, xmlhttprequest no está permitido en diferentes dominios (a menos que esto habilite CORS, que no es el caso).

Entonces, en este caso, me pregunto si verificar el origen de la solicitud (a través de HTTP_ORIGIN) y el encabezado X-Requested-With (para garantizar que la solicitud sea una solicitud de AJAX) sería suficiente para evitar Ataques CSRF. es decir, quería saber si realmente se necesita algún token teniendo en cuenta las condiciones anteriores.

Muchas gracias por tu tiempo.

    
pregunta cooper 12.12.2015 - 00:13
fuente

1 respuesta

7

Sí, puedes usar un encabezado personalizado como X-Requested-With para proteger las solicitudes AJAX de CSRF.

No se permite un encabezado de cliente entre dominios sin que CORS esté habilitado en su servidor. El encabezado Origin también podría usarse, sin embargo, la lógica para esto no es sencilla .

Si desea agregar seguridad adicional al encabezado personalizado en el espíritu de defensa en profundidad , podría agregar un token al encabezado . Sin embargo, como está diciendo que este es el tedio que desea evitar, verificar un encabezado personalizado sería suficiente para evitar futuras vulnerabilidades en los complementos del navegador como Flash o Silverlight que permiten configurar este encabezado.

    
respondido por el SilverlightFox 14.12.2015 - 11:56
fuente

Lea otras preguntas en las etiquetas