2016-09-14 10 views
21

Z mojej perspektywy technologie o nazwie Współdzielenie zasobów pochodzących z różnych źródeł (CORS) i Polityka bezpieczeństwa treści (CSP) wydaje się być bardzo podobna do celu i realizacji.Jaka jest różnica między CORS a CSP?

Obie pozwalają na dodanie do białej listy źródeł zasobów, które zawiera bezkompromisowa wersja strony internetowej, za pośrednictwem nagłówków odpowiedzi HTTP. Jedyną różnicą, jaką widzę, jest to, że dostawcy CSP wydają się być bardziej drobiazgowi, co można zatwierdzić w odpowiedzi HTTP.

Odpowiedz

29

CORS pozwala na rozluźnienie domeny Same Origin Policy.

np. Normalnie, jeśli użytkownik loguje się zarówno do example.com, jak i example.org, zasada dotycząca tego samego pochodzenia zapobiega przesyłaniu żądania AJAX do example.com do example.org/current_user/full_user_details i uzyskiwania dostępu do odpowiedzi.

Jest to domyślna polityka sieci i zapobiega wyciekaniu danych użytkownika po zalogowaniu się w wielu witrynach w tym samym czasie.

Teraz z CORS, example.org może ustawić zasady, aby zezwalać na pochodzenie https://example.com odczytać odpowiedzi wykonane przez AJAX. Zostanie to zrobione, jeśli oba programy będą obsługiwane przez tę samą firmę, a udostępnianie danych między źródłami będzie dozwolone w przeglądarce użytkownika. Wpływa tylko na stronę klienta, a nie na stronę serwera.

Dostawcy CSP ustalają zasady określające, jakie treści mogą być uruchamiane w bieżącej witrynie. Na przykład, jeśli JavaScript można wykonać inline lub z którego można pobrać pliki z domenami .js. Może to być korzystne, aby działać jako kolejna linia obrony przed atakami XSS, w której osoba atakująca spróbuje wstrzyknąć skrypt na stronę HTML. Normalnie output would be encoded, jednak programista zapomniał tylko o jednym polu wyjściowym. Ponieważ polityka uniemożliwia wykonywanie skryptów in-line, atak zostaje udaremniony.

+0

Dziękuję za bardzo pomocną odpowiedź (przegłosowałem, ale mój przedstawiciel jest niski, aby mógł liczyć). Jedyną częścią, której nie mogłem w pełni zrozumieć, było "Normalnie wyjście byłoby zakodowane". Być może pomogłoby to innym, gdybyś mógł to trochę wyjaśnić? – nickform

+0

Pewnie. Połączyłem się z inną odpowiedzią, aby wyjaśnić ten fragment. Daj mi znać, jeśli potrzebujesz dodatkowych wyjaśnień. – SilverlightFox

+0

Tak, dziękuję - podążam teraz. – nickform

16

CORS zezwala stronie A na udzielenie pozwolenia stronie B na odczyt (potencjalnie prywatny) danych z witryny A (przy użyciu przeglądarki użytkownika i poświadczeń).

CSP pozwala stronie zapobiec sama w sobie przed ładowaniem (potencjalnie złośliwych) treści z nieoczekiwanych źródeł (np. Jako obrona przed XSS).

1

CORS prowadzi kontrole z podmiotem zewnętrznym w celu uzyskania zezwolenia na korzystanie z jego usług. Tak więc strona trzecia zapewnia lub odmawia autoryzacji.

Jeśli na przykład strona w witrynie www.example.com musi wysłać żądanie do witryny www.example.org, należy wysłać żądanie OPTIONS wysłane do witryny www.example.org z Origin: www.example.com as prekursor do złożenia wniosku o zezwolenie. Teraz www.example.org zapewnia lub odmawia autoryzacji.

CSP zapobiega niezamierzonemu ładowaniu przez złośliwą zawartość stron trzecich przez określanie miejsca, z którego można załadować określony rodzaj treści. Tak więc, na przykład można podać prawidłowy źródło dla każdego z następujących skryptów, CSS, etc. mediów przez korzystających z dyrektywami

Przykład:

Content-Security-Policy: default-src 'none'; script-src 'self' www.google-analytics.com ajax.googleapis.com; connect-src 'self'; img-src "self"; style-src "self";

Powiązane problemy