HTTP-svarshuvudet Content-Security-Policy gör det möjligt för webbplatsen att styra vilka resurser användaragenten laddar för en given sida. Förutom i speciella fall handlar policyuppsättningen främst om att specificera serverns käll- och skriptändpunkter. Detta hjälper till att stoppa cross-site scripting-attacker
Dokumentation:Inloggningen med hyperlänken är synlig.
Denna artikel beskriver W3C:s innehållssäkerhetspolicy, eller CSP i korthet. Som namnet antyder är denna specifikation relaterad till innehållssäkerhet och används främst för att definiera vilka resurser en sida kan ladda och minska förekomsten av XSS.
Tidiga Chrome stödde CSP via X-WebKit-CSP-svarsheadern, medan Firefox och IE stödde X-Content-Security-Policy, och Chrome25 och Firefox23 började stödja den standardiserade Content-Security-Policy.
Känslig information om webbapplikationer, såsom användarnamn, lösenord, maskinnamn och/eller känsliga filplatser, kan samlas in Nybörjaranvändare kan övertalas att lämna känslig information som användarnamn, lösenord, kreditkortsnummer, personnummer med mera
Först skapar vi ett nytt projekt ASP.NET MVC, skapar ett nytt js-skript och laddar dynamiskt in js-koden för Baidu-statistik, enligt följande:
Som visas i figuren ovan kan vi se JS-skriptkoden som framgångsrikt har införts i en tredje part (Baidu), om det finns skadlig kod i tredjeparts-JS:en, såsom att stjäla cookies, ändra innehåll, hoppa länkar, etc.
Hur kan jag stoppa införandet av osäkra JS-skript från tredje part?
Lösningslösning
ResponshuvudLägg till "Innehålls-Säkerhetspolicy"till exempel:
Direktiv | Exempel på instruktionsvärde | illustrera | default-src | 'själv' cnd.a.com | Definiera standardladdningspolicyn för alla typer av resurser (JS, IMAGE, CSS, WEB FONT, AJAX-förfrågningar, iframes, multimedia, etc.), och använd standardinställningen för vissa typer av resurser om det inte finns någon separat definierad policy. | script-src | 'själv' js.a.com | Definiera en laddningspolicy för JavaScript. | Style-SRC | 'själv' css.a.com | Definiera en laddningspolicy för en stil. | img-src | 'själv' img.a.com | Definiera en laddningspolicy för bilder. | connect-src | 'själv' | Laddningspolicyer för förfrågningar från Ajax, WebSockets, etc. Om det inte är tillåtet simulerar webbläsaren ett svar med status 400. | font-src | font.a.com | Laddningspolicy för WebFont. | objekt-src | 'själv' | <object><embed> <applet> Laddningspolicyer för plugins som flash infördes för taggar som , eller . | Media-SRC | media.a.com | <audio> <video> Laddningsstrategier för HTML-multimedia införda för taggar som eller . | Frame-src | 'själv' | Laddningspolicy för ramar. | Sandlåda | tillåtelseformer | Aktivera sandlåda (liknande sandbox-egenskapen för en iframe) för den begärda resursen. | report-uri | /report-uri | Berätta för webbläsaren vilken adress logginformationen ska skickas till om den begärda resursen inte tillåts enligt policyn. Speciellt: Om du vill att webbläsaren endast ska rapportera loggar och inte blockera något kan du använda rubriken Content-Security-Policy-Report-Only istället. |
Låt oss ändra projektets web.config-fil för att lägga till en anpassad svarsheader enligt följande:
Kör om projektet enligt nedan:
Webbläsaren blockerade framgångsrikt inläsningen av tredjeparts js-skript:
Vägrade ladda skriptet 'https://hm.baidu.com/hm.js?6dbaac17dfeb2840b5b09d2dff6d2319' eftersom det bryter mot följande direktiv för innehållssäkerhetspolicy: "script-src 'self' http://localhost:56888/ ". Observera att 'script-src-elem' inte uttryckligen sattes, så 'script-src' används som reservplan. (Slut)
|