Il controllo accessi consente l'efficienza della protezione del browser di origine

3

Stavo creando un sito web come esperimento e ho provato a utilizzare poche richieste Ajax su siti diversi. Su alcuni siti avrò un errore:

XMLHttpRequest cannot load http://example.com/path No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

Quando ho aperto Wireshark e ho visto cosa stava passando attraverso la rete, ho potuto vedere che anche sui siti che hanno prodotto l'errore (il significato non aveva Access-Control-Allow-Origin nella risposta) la richiesta è stata inviata a il sito. Se ho modificato la risposta per includere l'intestazione Access-control-allow-origin: *, la risposta verrà elaborata come necessario nel mio sito.

La mia domanda è: se stavo cercando di fare CSRF al sito richiesto, la risposta non ha importanza quanto la richiesta. Finché la richiesta è stata elaborata su example.com, non importa se la risposta non ha l'intestazione Access-Control-Allow-Origin su di essa o no (supponendo che non mi interessa la risposta, volevo solo l'azione avere luogo).

Sono corretto e la protezione è inutile o mi manca qualcosa?

    
posta t0m9er 05.07.2016 - 01:14
fonte

1 risposta

1

È importante notare che CORS non è in giro per risolvere tutti i problemi di sicurezza ma piuttosto uno specifico che è in grado di leggere dati da una risorsa di terze parti (sono su google.com ma Provo a leggere i cookie di facebook.com.

Dai un'occhiata qui :

The Cross-Origin Resource Sharing standard works by adding new HTTP headers that allow servers to describe the set of origins that are permitted to read that information using a web browser.

Poiché CORS esiste solo per proteggere la lettura di un sito Web di terze parti e un attacco CSRF è inviare dati, l'attacco CSRF in fase di lancio probabilmente funziona ma non riceverai alcuna risposta (sempre a causa della lettura limitata).

Nota: non c'è nulla di speciale qui dal momento che è possibile avviare l'attacco CSRF anche se ciò non fosse possibile tramite CORS. Invece di inviarlo tramite AJAX puoi semplicemente reindirizzare l'utente all'URL specifico usando location.href = www.example.com/csrfhack=some_hack

    
risposta data 05.07.2016 - 01:29
fonte

Leggi altre domande sui tag