Access-Control-Allow-Origin
ha un significato diverso rispetto alla semplice prevenzione di CSRF: impedisce che lo script richiedente possa ottenere il risultato della richiesta.
Lo stesso vale per Access-Control-Allow-Credentials
. Questa intestazione consente allo script di ottenere la risposta di una richiesta con credenziali. Tieni presente che non puoi utilizzare il carattere jolly *
per Access-Control-Allow-Origin
quando invii Access-Control-Allow-Credentials: true
. ma potresti semplicemente utilizzare il valore dell'intestazione della richiesta Origin
.
L'implicazione è: cosa potrebbe fare uno script con i contenuti del tuo sito?
- Se l'utente ha effettuato il login, uno script può ottenere tutti i siti che l'utente può vedere, analizzarlo e inviare i dati (magari riservati) alla sua origine.
- Se includi qualche tipo di token anti-CSRF in form / link, potrebbero ottenere il valore del token e fare una richiesta con quel token valido.
- Può agire sulla pagina per conto dell'utente.
Per XSS dipende da cosa intendi con XSS. Se intendi con XSS che un altro script agisca su Bealf di un utente, allora lo hai già permesso.
Quindi, mentre l'aggiunta a un sito remoto rivela solo alcune informazioni sul sito di origine (come il tempo per caricarlo), la perdita di informazioni (specialmente per gli utenti che hanno effettuato l'accesso) può essere molto più alta.
Come nota a margine: utilizza l'intestazione Origin
se presente per bloccare le richieste.