Activa CSRF global en el portal (CsrfViewMiddleware)
- añade django.middleware.csrf.CsrfViewMiddleware a MIDDLEWARE (estaba ausente:
el CSRF estaba desactivado en todo el sitio)
- head.html: $.ajaxSetup envía X-CSRFToken en todo POST AJAX de jQuery + expone
window.CSRF_TOKEN (fuerza la cookie csrftoken en cada página)
- store_novawow.html: el fetch() nativo ahora manda X-CSRFToken (era el único que
se rompía al activar el middleware)
- register.html: añade {% csrf_token %} al formulario
- retira @csrf_exempt de login/register/restore_character/restore_items
(solo los webhooks stripe/sumup siguen exentos)
- auditoría previa: el resto de POST (AJAX jQuery + forms nativos con token) ya cubierto
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+5
-6
@@ -59,12 +59,11 @@ en `forum/permissions.py`:
|
||||
- Acceso a temas de foros ocultos/borrados bloqueado también por URL directa
|
||||
(no solo en los listados).
|
||||
|
||||
> ⚠️ **Recomendación para todo el sitio** (fuera del foro): `novawow/settings.py`
|
||||
> no incluye `django.middleware.csrf.CsrfViewMiddleware`, por lo que el resto de
|
||||
> formularios POST del portal (app `home`) **no** validan CSRF. El foro está
|
||||
> protegido con `@csrf_protect`, pero conviene activar el middleware global y
|
||||
> revisar que las vistas POST de `home` lleven `{% csrf_token %}` (algunas ya lo
|
||||
> llevan; las AJAX usan `@csrf_exempt`).
|
||||
> ✅ **CSRF global activado** (todo el portal): `novawow/settings.py` ya incluye
|
||||
> `django.middleware.csrf.CsrfViewMiddleware`. Las peticiones AJAX (jQuery) envían
|
||||
> la cabecera `X-CSRFToken` automáticamente (`$.ajaxSetup` en `partials/head.html`),
|
||||
> los formularios nativos llevan `{% csrf_token %}`, y solo los webhooks externos
|
||||
> (`stripe_webhook`, `sumup_webhook`) mantienen `@csrf_exempt`.
|
||||
|
||||
## Editor
|
||||
|
||||
|
||||
Reference in New Issue
Block a user