Cookies + protección CSRF + AJAX

0

En mi aplicación (construida en Codeigniter), los usuarios pueden enviar actualizaciones de estado. Al enviar formularios, Codeigniter proporciona automáticamente una cookie oculta. Puedo validar esa cookie a través de AJAX cuando el usuario envía la actualización, por lo que la protección CSRF funciona muy bien.

El problema surge cuando estoy usando AJAX para enviar / cargar datos sin un formulario (como eliminar una actualización de estado). En tales casos, debido a que no existe un formulario, no hay una cookie generada automáticamente. Me he dado cuenta de que puedo usar la cookie que crea la actualización de estado para eliminarla (y he limitado la función de eliminación al creador de estado).

¿Pero el uso de la cookie de creación de estado para eliminar la actualización de estado viola un principio de seguridad? ¿Es necesario que la cookie caduque (o sea diferente a la cookie de creación?), Y si es así, ¿cómo puedo generar otra cookie que se vinculará a la actualización de estado correcta?

    
pregunta chowwy 11.01.2013 - 15:01
fuente

1 respuesta

3

Creo que quisiste decir tokens, no cookies. Por lo que sé, el mecanismo CodeIgniter antiCSRF inserta tokens aleatorios únicos en cada forma. Estos no tienen nada que ver con las cookies HTTP, que como una buena práctica no deben ser accesibles desde el código JavaScript.

Con respecto a su pregunta real, se ha discutido en otros hilos si el uso de un token anti CSRF por sesión es algo malo ( ejemplo ). Su caso es entre usar un token por formulario y usar un token por sesión, por lo tanto, mientras esté usando SSL, debería estar bien.

    
respondido por el Dinu S 11.01.2013 - 15:19
fuente

Lea otras preguntas en las etiquetas