Stai costruendo la tua app, il browser lancia un errore rosso di CORS, cerchi su un forum e copi la soluzione che promette che tutto funzionerà. Di solito è la peggiore possibile. Capiamo cos'è il CORS e perché quella scorciatoia è pericolosa.
Cos'è davvero il CORS
Di default, il browser non lascia che site-a.com legga la risposta di un'API su site-b.com. È la same-origin policy, e protegge i tuoi utenti: impedisce a una scheda malevola di leggere i dati di un'altra scheda dove hai fatto login. Il CORS è il meccanismo con cui il tuo server dice queste origini specifiche sono permesse, tramite l'header Access-Control-Allow-Origin.
L'errore che rompe tutto
Il pattern pericoloso è riflettere qualsiasi origine che arriva e, per di più, permettere le credenziali:
Access-Control-Allow-Originimpostato sull'origine che richiede (riflessione dinamica)- insieme a
Access-Control-Allow-Credentials: true
Con quella combinazione, qualsiasi sito che il tuo utente visita può chiamare la tua API usando i cookie di sessione dell'utente e leggere la risposta. In altre parole, un sito qualsiasi può estrarre i dati privati del tuo utente senza che se ne accorga. Il wildcard * è meno grave perché il browser vieta di combinarlo con le credenziali, ma non ha comunque posto in produzione.
Come configurarlo bene
Pensa in difesa, non in comodità:
- Tieni una allowlist di origini permesse e confrontala in modo esatto. Non riflettere mai ciò che arriva senza validare.
- Attiva
Allow-Credentialssolo se hai davvero bisogno di inviare cookie, e solo per origini specifiche. - Limita metodi e header a ciò che usi (
Allow-Methods,Allow-Headers). - Attenzione a includere
nullo sottodomini di terze parti nella lista.
Perché è difficile da individuare
Questa falla è silenziosa: tutto funziona, non c'è errore visibile e l'app sembra sana. Te ne accorgi solo quando qualcuno ne abusa. Per questo conviene rivedere la configurazione CORS in modo esplicito a ogni deploy, invece di fidarti che nessun errore significa che va bene.
Rivedi il tuo CORS con Scanaris
Scanaris esegue un controllo di sola lettura per vedere se la tua API riflette origini e come risponde agli header CORS, senza lanciare attacchi né toccare i tuoi dati: osserva solo la risposta pubblica. Se trova una configurazione pericolosa, ti dà un fix prompt perché la tua IA la riscriva con una allowlist. Scansiona il tuo sito ed evita la falla che nessuno vede finché non è troppo tardi.