Po przeczytaniu o CORS nie rozumiem, jak poprawia bezpieczeństwo.
CORS nie poprawia bezpieczeństwa. CORS zapewnia serwerom mechanizm informujący przeglądarki, w jaki sposób powinny uzyskać dostęp do obcych domen, i próbuje to zrobić w sposób zgodny z modelem bezpieczeństwa przeglądarki, który istniał przed CORS (a mianowicie z tą samą polityką pochodzenia ).
Ale te same zasady pochodzenia i CORS mają ograniczony zakres. W szczególności sama specyfikacja CORS nie ma mechanizmu odrzucania żądań. Może używać nagłówków, aby poinformować przeglądarkę, aby nie pozwalała stronie z obcej domeny na odczytanie odpowiedzi. W przypadku żądań inspekcji wstępnej może poprosić przeglądarkę, aby nie wysyłała pewnych żądań z domeny zagranicznej. Ale CORS nie określa żadnych środków dla serwera, aby odrzucić (to znaczy nie wykonać) rzeczywiste żądanie.
Weźmy przykład. Użytkownik jest zalogowany na stronie A
za pomocą pliku cookie. Użytkownik ładuje złośliwą witrynę M
, która próbuje przesłać formularz, który ma POST
do A
. Co się stanie? Cóż, z CORSem lub bez niego M
, z dozwoloną domeną lub bez , przeglądarka wyśle żądanie do A
pliku cookie autoryzacji użytkownika, a serwer wykona złośliwyPOST
tak, jakby to użytkownik zainicjował.
Ten atak nazywa się fałszerstwem żądań między lokacjami , a sam CORS nie robi nic, aby go złagodzić. Dlatego zabezpieczenia CSRF są tak ważne, jeśli zezwalasz na żądania zmiany danych w imieniu użytkowników.
Teraz użycie Origin
nagłówka może być ważną częścią ochrony przed CSRF. Rzeczywiście, sprawdzenie tego jest częścią aktualnych zaleceń dotyczących wielotorowej obrony CSRF . Ale to użycieOrigin
nagłówka wykracza poza specyfikację CORS.
Podsumowując, CORS jest przydatną specyfikacją do rozszerzania istniejącego modelu bezpieczeństwa Same Origin Policy na inne akceptowane domeny. Nie dodaje zabezpieczeń, a witryny potrzebują takich samych mechanizmów obronnych, jak przed CORS.