tokens anti-CSRF vs Referer y pruebas POST

1

Entiendo que los tokens anti-CSRF son una parte de los datos enviados en la respuesta que se espera que coincida en las solicitudes posteriores, pero no se almacena en las cookies. Por ejemplo, un formulario con un valor oculto que debe incluirse antes de que se realice una acción en el envío.

El inconveniente de esto es que todas las aplicaciones y los programadores deben recordar incluir este token adicional.

Veo una solución alternativa que permite que las aplicaciones individuales solo necesiten requerir POST para las modificaciones de los datos, y su trabajo está hecho.

Para hacer que esto funcione, simplemente requerimos que todas las solicitudes POST tengan un Referer del mismo sitio.
(no es un sitio que no sea de confianza, no es un sitio que no sea https, y no es un remitente en blanco)

¿Esta solución es un reemplazo completo para los tokens anti-CSRF?

    
pregunta George Bailey 10.01.2012 - 22:30
fuente

2 respuestas

4

Esto no es una solución porque los firewalls de escritorio comunes ofrecen una opción para quitar el encabezado del Referer por razones de privacidad.

Además, algunos complementos permiten establecer el encabezado del Referer en valores arbitrarios, aunque los complementos comunes (Java, Flash) evitan esto en versiones recientes.

    
respondido por el Hendrik Brummermann 10.01.2012 - 23:27
fuente
1

Agregando a @Hendrik answer: para ofrecer una protección CSRF que sea tolerada por sus usuarios, debe permitir las solicitudes sin el encabezado del Referer. Y es muy fácil realizar una solicitud desde sitios web de terceros sin este encabezado; por ejemplo, la solicitud originada en https: // se eliminará, también hay varios otras formas de eliminarlo (descargo de responsabilidad: es mi investigación)

Puede consultar el Encabezado de origen que es la "mejor versión de Referer" ( no es tan fácil de eliminar), pero aún no está ampliamente soportado por los navegadores y no tiene la intención de protegerlo de CSRF. Para eso, actualmente solo puede confiar en tokens (incluso el mecanismo anti-CSRF basado en encabezados de solicitud personalizados se ha omitido recientemente ).

    
respondido por el Krzysztof Kotowicz 11.01.2012 - 20:41
fuente

Lea otras preguntas en las etiquetas