Comencé a agregar un comentario sobre la respuesta de Hendrik Brummermann, pero rápidamente se quedó sin espacio, por lo tanto ...
No entiendo por qué una ausencia de protección CSRF afectaría el registro de una dirección IP. E incluso si lo hiciera, en ausencia de cualquier gestión de sesión, ¿qué relevancia tiene una dirección IP para gestionar la integridad de una transacción?
Además, para evitar repeticiones, el token debería variar entre transacciones, por lo que el servidor tendría que generar nuevos valores para cada operación y recordar entre solicitudes, lo que implica una sesión, lo que implica una galleta!
Lo que falta en la pregunta original son los detalles del modelo de amenaza, especialmente en ausencia de sesión, ¿qué es lo que está tratando de proteger?
Suponiendo que los ataques de reproducción no son un gran problema, entonces podría incluir tanto un valor aleatorio (R) como el hash de ese valor aleatorio + sal (f (R + X)) como campos ocultos. Al incrustar una marca de tiempo en R, se reduce la ventana para cualquier ataque de repetición (cuando agrega la maquinaria para verificarlo).
Se podría implementar una solución sin estado utilizando la información provista en cada solicitud, por ejemplo. usando el agente de usuario y los encabezados de aceptación y (digamos) los primeros 16 bits de la dirección IP del cliente Y un sal secreto.
Tenga en cuenta que regularmente he señalado la tontería de usar la información de la dirección IP para la autenticación, y que la dirección IP de un cliente puede cambiar (por ejemplo, al conectarse a través de proxies de carga equilibrada), sin embargo IME, la única vez que los bits más significativos el cambio de la dirección IP se produce cuando el cliente intenta deliberadamente ocultar su identidad a través de un servicio como TOR, en cuyo caso es probable que no quiera sus POST.
Hay otras formas de hacer que este identificador de usuario sea más exclusivo, por ejemplo, propiedades SSL negociadas , el conjunto de cookies actual (incluso si está vacío!),
Consulte también panopticlick para obtener más información sobre las huellas dactilares de los clientes, pero tenga en cuenta que es probable que haya una gran cantidad de superposición entre usuarios que no aceptan cookies y usuarios que no ejecutarán su javascript.
Obviamente, cualquier dato de referencia que utilice para la verificación, si desea implementar esto a través de Django, entonces deberá reemplazar tanto el generador de token como el verificador (CsrfViewMiddleware).