To pytanie dotyczy tylko ochrony przed atakami typu Cross Site Request Forgery.
Chodzi w szczególności o: Czy ochrona za pośrednictwem nagłówka Origin (CORS) jest tak dobra, jak ochrona za pośrednictwem tokenu CSRF?
Przykład:
- Alicja jest zalogowana (używając pliku cookie) w swojej przeglądarce na „ https://example.com ”. Zakładam, że korzysta z nowoczesnej przeglądarki.
- Alicja odwiedza „ https://evil.com ”, a kod klienta evil.com wykonuje jakieś żądanie do „ https://example.com ” (klasyczny scenariusz CSRF).
Więc:
- Jeśli nie sprawdzimy nagłówka Origin (po stronie serwera) i żadnego tokena CSRF, mamy lukę w zabezpieczeniach CSRF.
- Jeśli sprawdzimy token CSRF, jesteśmy bezpieczni (ale to trochę uciążliwe).
- Jeśli sprawdzimy nagłówek Origin, żądanie z kodu po stronie klienta evil.com powinno zostać zablokowane tak samo, jak w przypadku użycia tokena CSRF - z wyjątkiem sytuacji, gdy kod evil.com może ustawić nagłówek Origin.
Wiem, że nie powinno to być możliwe z XHR (patrz np. Bezpieczeństwo udostępniania zasobów między źródłami ), a przynajmniej nie, jeśli ufamy, że specyfikacja W3C zostanie poprawnie zaimplementowana we wszystkich nowoczesnych przeglądarkach (czy możemy?)
A co z innymi rodzajami próśb - np. Przesłaniem formularza? Ładowanie tagu script / img / ...? Czy w inny sposób strona może (legalnie) utworzyć żądanie? A może jakiś znany hack JS?
Uwaga: nie mówię o
- aplikacje natywne,
- manipulowane przeglądarki,
- błędy cross-site scripting na stronie example.com,
- ...
Origin
? To zniweczyłoby ochronę CORS.