Come appare il messaggio
CSRF check failedCause frequenti
- Il cookie di sessione non viene salvato, ad es. cookie Secure su HTTP dietro un proxy TLS.
- Reverse proxy senza
overwriteprotocoletrusted_proxiescorretti. - PHP non riesce a scrivere le sessioni (permessi su
session.save_path, disco pieno). - Redis come storage di sessione irraggiungibile o pieno.
- Pagina di login aperta troppo a lungo e sessione scaduta, o accesso da due hostname diversi.
Verifica
- Verifica se e come viene impostato il cookie di sessione
curl -sI https://cloud.example.com/login | grep -i '^set-cookie' - Mostra le impostazioni proxy di Nextcloud
sudo -u www-data php /var/www/nextcloud/occ config:system:get overwriteprotocol; sudo -u www-data php /var/www/nextcloud/occ config:system:get trusted_proxies - Mostra lo storage delle sessioni PHP
php -i | grep -E 'session.save_(handler|path)' - Mostra la configurazione di cache e Redis
sudo -u www-data php /var/www/nextcloud/occ config:system:get memcache.distributed; sudo -u www-data php /var/www/nextcloud/occ config:system:get redis
Soluzione
- Dietro un proxy TLS imposta
'overwriteprotocol' => 'https'e aggiungi l'IP del proxy atrusted_proxies. - Usa sempre lo stesso hostname e imposta
overwrite.cli.urldi conseguenza. - Rendi scrivibile la directory delle sessioni o controlla Redis:
redis-cli ping. - Cancella i cookie del dominio e ricarica la pagina di login.
- Controlla lo spazio su disco: senza spazio i file di sessione falliscono in silenzio.
Domande frequenti
“CSRF check failed” è un attacco?
In pratica quasi mai. Significa che il token del form non corrisponde alla sessione attuale, di solito per una sessione persa o nuova.
Perché capita solo ad alcuni utenti?
Spesso la colpa è di estensioni del browser, cookie bloccati o un segnalibro su un altro hostname. Una finestra privata lo restringe subito.