Implicazioni sulla sicurezza dell'aggiunta di tutti i domini a CORS (ad esempio Access-Control-Allow-Origin: *) [duplicate]

3

Sono curioso di sapere quali sono le implicazioni per la sicurezza se imposto le seguenti due risposte HTTP CORS ;

Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: false

Gli unici problemi di sicurezza che vedo sono attacchi DoS e attacchi CSRF.
Gli attacchi CSRF possono essere già raggiunti con gli elementi IMG e FORM. Gli attacchi DoS relativi a CORS possono essere risolti bloccando le richieste sull'intestazione del referrer.

Quindi non sono sicuro del motivo per cui ha affermato che solo un determinato set di domini dovrebbe essere fornito "accesso CORS".

Quali sono le implicazioni per la sicurezza dell'aggiunta di tutti i domini "accesso CORS"?

    
posta brillout 27.11.2013 - 12:07
fonte

1 risposta

2

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.

    
risposta data 27.11.2013 - 14:07
fonte