Z tego co wiem o CORS, tak to działa: mam stronę foo.com, która obsługuje stronę X. X chce opublikować dane na innym pasku domeny. com. Jeśli bar.com ma włączoną funkcję CORS (jej nagłówki generują Access-Control-Allow-Origin foo.com), to strona X może teraz wysyłać dane do bar.com.Nieporozumienie na temat działania Cross Origin Resource Sharing (CORS)
Jak rozumiem, aby CORS działał, wszystko zależy od ustawienia na bar.com i nie ma nic wspólnego z foo.com. Chodzi o to, aby bar.com nie akceptował żądań ze starej domeny.
Jednak to naprawdę nie ma dla mnie sensu. Sądziłem, że CORS został zaprojektowany, aby umożliwić foo.com na dyktowanie, z kim X może się komunikować. Jeśli wrócimy do poprzedniego przykładu, ale tym razem X jest zagrożony przez podejrzany skrypt, aby w tajemnicy wysłać do evil.com, jak CORS zamierza to zatrzymać? evil.com ma włączoną funkcję CORS i jest ustawiona na *, więc akceptuje żądania z dowolnego miejsca. W ten sposób użytkownik, który myśli, że używa witryny foo.com, nieświadomie wysyła dane do evil.com.
Jeśli chodzi o ochronę samej bar.com, to dlaczego przeglądarka wymusza politykę? Jedyną możliwą sytuacją, w której ma to sens, jeśli masz stronę evil.com wyświetlającą stronę Y, która podszywa się pod stronę foo.com, która próbuje wysłać dane do bar.com. Ale CORS jest egzekwowane przez przeglądarkę, wszystko co musisz zrobić, to uczynić evil.com proxy, które wysyła fałszywe żądania pochodzenia do bar.com (dane przechodzą od Y do evil.com, evil.com określa ich fałszywe pochodzenie do foo .com następnie wysyła go do bar.com).
To ma dla mnie sens tylko wtedy, gdy działa na odwrót. foo.com ma włączoną funkcję CORS, a jej nagłówki są ustawione na Bar.com Access-Control-Allow-Origin. W ten sposób skryptom rouge odmawiano dostępu do zła.com przez przeglądarkę. Sensowne jest więc, aby przeglądarka wymuszała stosowanie tej zasady, ponieważ uruchamiała skrypty, które mogą być różnokolorowe. To nie powstrzyma witryn rouge przed próbą wysłania danych rouge do bar.com, ale bar.com może zabezpieczyć się za pomocą nazwy użytkownika/hasła. Jeśli foo.com ma punkty końcowe, które oczekują danych z X, możesz osadzić tokeny na X, aby upewnić się, że evil.com nie wysyła do nich danych.
Czuję, że nie rozumiem tutaj czegoś ważnego. Naprawdę doceniam pomoc.
Myślałem dokładnie to samo - każde wyjaśnienie CORS powinno zawierać zastrzeżenie, które mówi o tym, jak można go obejść przez proxy. Nie jestem pewien, czy wykrycie tego rodzaju ataku byłoby tak łatwe. Mam nadzieję, że zauważysz i będziesz się opiekował, jak mówi TJ, ale wyobrażam sobie, że w większości przypadków łatwo może zostać niezauważone. –