Antetul de răspuns HTTP Content-Security-Policy permite site-ului să controleze ce resurse încarcă agentul utilizatorului pentru o anumită pagină. Cu excepția unor cazuri speciale, setul de politici implică în principal specificarea punctelor de final sursă și script ale serverului. Acest lucru va ajuta la oprirea atacurilor cross-site scripting
Documentație:Autentificarea cu hyperlink este vizibilă.
Acest articol descrie Politica de Securitate a Conținutului a W3C, sau CSP pe scurt. După cum sugerează și numele, această specificație este legată de securitatea conținutului și este folosită în principal pentru a defini ce resurse poate încărca o pagină și pentru a reduce apariția XSS.
Chrome timpuriu suporta CSP prin antul de răspuns X-WebKit-CSP, în timp ce Firefox și IE suportau X-Content-Security-Policy, iar Chrome25 și Firefox23 au început să suporte standardul Content-Security-Policy.
Informații sensibile despre aplicații web, cum ar fi nume de utilizator, parole, nume de mașini și/sau locații sensibile ale fișierelor, pot fi colectate Utilizatorii începători pot fi convinși să furnizeze informații sensibile precum nume de utilizator, parole, numere de card de credit, numere de securitate socială etc
Mai întâi, să creăm un nou proiect ASP.NET MVC, să creăm un nou script js și să încărcăm dinamic codul js al statisticilor Baidu, după cum urmează:
Așa cum se vede în figura de mai sus, putem vedea codul scriptului JS introdus cu succes într-o terță parte (Baidu), dacă există cod malițios în JS-ul terț, cum ar fi furtul de cookie-uri, modificarea conținutului, săritul linkurilor etc.
Cum pot opri introducerea unor scripturi JS terțe nesigure?
Soluție alternativă
Cap de răspunsAdaugă "Conținut-Securitate-Politică"de exemplu:
Directiva | Exemplu de valoare de instrucțiune | ilustra | Default-SRC | "sine" cnd.a.com | Definiți politica implicită de încărcare pentru toate tipurile de resurse (JS, IMAGE, CSS, WEB FONT, SOLICITĂRI AJAX, IFRAMES, MULTIMEDIA ETC.) și folosiți implicit pentru anumite tipuri de resurse dacă nu există o politică separată definită. | script-src | "sine" js.a.com | Definește o politică de încărcare pentru JavaScript. | style-src | "sine" css.a.com | Definește o politică de încărcare pentru un stil. | IMG-SRC | "sine" img.a.com | Definește o politică de încărcare pentru imagini. | connect-src | "sine" | Încărcarea politicilor pentru cererile de la Ajax, WebSockets etc. Dacă nu este permis, browserul simulează un răspuns cu un status de 400. | font-src | font.a.com | Politica de încărcare pentru WebFont. | object-src | "sine" | <object><embed> <applet> Politici de încărcare pentru pluginuri precum Flash introduse pentru etichete precum , sau . | media-src | media.a.com | <audio> <video> Strategii de încărcare pentru multimedia HTML introduse pentru etichete precum sau . | frame-src | "sine" | Politica de încărcare pentru cadre. | Cutie de nisip | Forme permise | Activează sandbox-ul (similar cu proprietatea sandbox a unui iframe) pentru resursa solicitată. | Raport-uri | /report-uri | Spune-i browserului la ce adresă să trimită informațiile din jurnal dacă resursa solicitată nu este permisă de politică. Special: Dacă vrei ca browserul să raporteze doar jurnalele și să nu blocheze nimic, poți folosi antetul Content-Security-Policy-Report-Only în schimb. |
Să modificăm fișierul web.config al proiectului pentru a adăuga un antet de răspuns personalizat, după cum urmează:
Reluați proiectul așa cum este prezentat mai jos:
Browserul a blocat cu succes încărcarea scripturilor js terțe:
A refuzat să încarce scriptul 'https://hm.baidu.com/hm.js?6dbaac17dfeb2840b5b09d2dff6d2319' deoarece încalcă următoarea directivă a Politicii de Securitate a Conținutului: "script-src 'self' http://localhost:56888/ ". Rețineți că 'script-src-elem' nu a fost setat explicit, așa că 'script-src' este folosit ca rezervă. (Sfârșit)
|