|
Nagłówek odpowiedzi HTTP Content-Security-Policy pozwala witrynom kontrolować, które zasoby są ładowane przez agentów użytkownika dla danej strony. Z wyjątkiem szczególnych przypadków, zestaw zasad obejmuje przede wszystkim określenie źródła serwera i punktu końcowego skryptu. Pomoże to powstrzymać ataki Cross-Site Script (Cross-Site Script)
Dokumentacja: https: //developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Security-Policy
Ten artykuł dotyczy polityki bezpieczeństwa treści W3C, w skrócie CSP. Jak sama nazwa wskazuje, specyfikacja ta jest związana z bezpieczeństwem treści i służy głównie do definiowania zasobów, które można załadować na stronę w celu ograniczenia występowania XSS.
Wczesny Chrome obsługiwał CSP poprzez nagłówek odpowiedzi X-WebKit-CSP, podczas gdy Firefox i IE obsługiwały X-Content-Security-Policy, a Chrome25 i Firefox23 zaczęły obsługiwać standardową Content-Security-Policy.
mogą gromadzić poufne informacje o aplikacjach internetowych, takie jak nazwy użytkowników, hasła, nazwy maszyn i/lub lokalizacje poufnych plików mogą nakłaniać użytkowników głównych do podawania poufnych informacji, takich jak nazwy użytkowników, hasła, numery kart kredytowych, numery ubezpieczenia społecznego itp.
Przede wszystkim tworzymy nowy projekt ASP.NET MVC z nowym skryptem js, aby dynamicznie ładować kod Baidu Statistics js w następujący sposób:
Jak pokazano powyżej, widzimy, że kod skryptu JS strony trzeciej (Baidu) został pomyślnie wprowadzony. Załóżmy, że w js strony trzeciej znajdują się złośliwe kody, takie jak: kradzież plików cookie, modyfikacja treści, przeskakiwanie linków i tak dalej.
Jak zatrzymać wprowadzanie niebezpiecznych skryptów js stron trzecich?
Rozwiązanie
Dodaj "Content-Security-Policy" w nagłówku odpowiedzi , przykład jak poniżej:
Dyrektywy | Przykład wartości polecenia | Opis | default-src | 'self' cnd.a.com | Definiuje domyślną politykę ładowania dla wszystkich typów zasobów (js, obraz, css, czcionka internetowa, żądanie ajax, iframe, multimedia itp.), jeśli nie ma oddzielnej polityki dla określonego typu zasobu, użyje domyślnej. | script-src | 'self' js. | Określa zasady ładowania dla JavaScript. | style-src | 'self' css.a.com | Definiuje zasady ładowania stylów. | img-src | 'self' img.a.com | Definiuje zasady ładowania obrazów. | connect-src | 'self' | Zasady ładowania dla żądań Ajax, WebSocket itp. Jeśli nie jest to dozwolone, przeglądarka będzie symulować odpowiedź ze statusem 400. | font-src | font.a.com | Zasady ładowania dla WebFont. | object-src | 'self' | Zasady ładowania wtyczek, takich jak Flash, wprowadzanych przez znaczniki takie jak <object>, <embed> lub <applet>. | media-src | media.a.com | Zasady ładowania multimediów HTML wprowadzanych przez znaczniki takie jak <audio> lub <video>. | frame-src | 'self' | Zasady ładowania dla ramek. | piaskownica | allow-forms | Włącza piaskownicę dla żądanych zasobów (podobnie do atrybutu piaskownicy ramki iframe). | report-uri | /report-uri | Informuje przeglądarkę, gdzie przesłać komunikaty dziennika, jeśli żądany zasób nie jest dozwolony przez politykę. Specjalne: Jeśli chcesz, aby przeglądarka zgłaszała tylko dzienniki i nie blokowała żadnych treści, możesz zamiast tego użyć nagłówka Content-Security-Policy-Report-Only. |
Zmodyfikujmy plik web.config projektu, aby dodać niestandardowy nagłówek odpowiedzi w następujący sposób:
Uruchom ponownie projekt, jak pokazano poniżej:
Przeglądarka pomyślnie zablokowała ładowanie skryptu js innej firmy:
Odmówiono załadowania skryptu 'https://hm.baidu.com/hm.js?6dbaac17dfeb2840b5b09d2dff6d2319', ponieważ narusza on następującą dyrektywę Content Security Dyrektywa zasad: "script-src 'self' http://localhost:56888/ ". Zauważ, że "script-src-elem" nie został jawnie ustawiony, więc "script-src" jest używany jako rezerwowy. (koniec) |
Poprzedni artykuł: Kolejność wykonywania ASP.NET MVC HttpApplicationNastępny artykuł:Podsumowanie aktualnej kompilacji User-Agent popularnych przeglądarek
|