Estoy escribiendo mi comprensión del mecanismo csrf protcetion
en django
. Corrígeme si es defectuoso.comprensión csrf en django campo oculto en forma y CSRFCookie
csrfViewMiddleware
crea una cadena única y la almacena en un campo oculto 'csrfmiddlewaretoken' de un formulario que se origina en el host. Dado que un sitio web malicioso que imita este formulario no conocerá el valor de este campo, no puede usarlo.
Cuando alguien intenta publicar un formulario, el sitio web comprueba el campo 'csrfmiddlewaretoken
' y su valor. Si es incorrecto o no se establece, se detectará un intento de csrf.
Pero entonces, ¿qué es exactamente el CSRFCookie
? The doc dice que el valor único se establece en CSRFCookie
y también en hidden field
.Esto es donde estoy confundido. ¿Se envía una cookie al navegador con la cadena única incrustada? Deseo que alguien pueda explicar esto con claridad.
gracias,
De modo que solo el navegador de un usuario autenticado obtiene este token y no todos los que visitan el sitio. ¿Es correcto? – damon
No estoy seguro de cómo exactamente lo maneja Django: puede proteger a todos los usuarios independientemente del estado de autenticación. Básicamente, cualquier acción que tenga la capacidad de cambiar alguna faceta de su aplicación debe tener protección CSRF. – Todd