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 Aza pomocą pliku cookie. Użytkownik ładuje złośliwą witrynę M, która próbuje przesłać formularz, który ma POSTdo A. Co się stanie? Cóż, z CORSem lub bez niego M, z dozwoloną domeną lub bez , przeglądarka wyśle żądanie do Apliku 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 Originnagłó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.