HTTP-responsheaderen Content-Security-Policy lar nettstedet kontrollere hvilke ressurser brukeragenten laster inn for en gitt side. Bortsett fra i spesielle tilfeller, innebærer policysettet hovedsakelig å spesifisere kilde- og skriptendepunktene til serveren. Dette vil bidra til å stoppe cross-site scripting-angrep
Dokumentasjon:Innloggingen med hyperkoblingen er synlig.
Denne artikkelen beskriver W3Cs innholdssikkerhetspolicy, eller CSP for kort. Som navnet antyder, er denne spesifikasjonen relatert til innholdssikkerhet og brukes hovedsakelig for å definere hvilke ressurser en side kan laste inn og redusere forekomsten av XSS.
Tidlige Chrome støttet CSP via X-WebKit-CSP-responshodet, mens Firefox og IE støttet X-Content-Security-Policy, og Chrome25 og Firefox23 begynte å støtte standard Content-Security-Policy.
Sensitiv informasjon om nettapplikasjoner, som brukernavn, passord, maskinnavn og/eller sensitive filplasseringer, kan samles inn Nybegynnere kan bli overtalt til å oppgi sensitiv informasjon som brukernavn, passord, kredittkortnumre, personnummer osv
Først, la oss opprette et nytt prosjekt ASP.NET MVC, lage et nytt js-skript, og dynamisk laste inn js-koden til Baidu-statistikken, som følger:
Som vist i figuren ovenfor, kan vi se JS-skriptkoden som har blitt vellykket introdusert i en tredjepart (Baidu), hvis det finnes noe ondsinnet kode i tredjeparts JS, som å stjele informasjonskapsler, endre innhold, hoppe lenker osv.
Hvordan kan jeg stoppe innføringen av usikre tredjeparts JS-skript?
Løsningsløsning
ResponshodeLegg til "Innholdssikkerhetspolicy"for eksempel:
Direktiv | Eksempel på instruksjonsverdi | illustrere | default-src | 'selv' cnd.a.com | Definer standard lastepolicy for alle typer ressurser (JS, IMAGE, CSS, WEB FONT, AJAX-forespørsler, iframes, multimedia osv.), og bruk standard for visse typer ressurser hvis det ikke finnes en separat definert policy. | script-src | 'selv' js.a.com | Definer en lastepolicy for JavaScript. | Style-SRC | 'selv' css.a.com | Definer en lastepolicy for en stil. | img-src | 'selv' img.a.com | Definer en lastepolicy for bilder. | connect-src | 'selv' | Lastepolicyer for forespørsler fra Ajax, WebSockets, osv. Hvis det ikke er tillatt, simulerer nettleseren et svar med status 400. | font-src | font.a.com | Lastepolicy for WebFont. | objekt-src | 'selv' | <object><embed> <applet> Lastepolicyer for plugins som Flash ble introdusert for tagger som , eller . | Media-SRC | media.a.com | <audio> <video> Lastestrategier for HTML-multimedia introdusert for tagger som eller . | frame-src | 'selv' | Lastepolicy for rammer. | Sandkasse | allow-former | Aktiver sandkasse (lik sandkasse-egenskapen til en iframe) for den forespurte ressursen. | report-uri | /report-uri | Fortell nettleseren hvilken adresse logginformasjonen skal sendes til hvis den forespurte ressursen ikke er tillatt av policyen. Spesial: Hvis du vil at nettleseren kun skal rapportere logger og ikke blokkere noe, kan du bruke headeren Innhold-Sikkerhet-Policy-Rapport-Kun i stedet. |
La oss endre prosjektets web.config-fil for å legge til en egendefinert svarhode som følger:
Kjør prosjektet på nytt som vist nedenfor:
Nettleseren blokkerte med suksess lasting av tredjeparts js-skript:
Nektet å laste inn skriptet 'https://hm.baidu.com/hm.js?6dbaac17dfeb2840b5b09d2dff6d2319' fordi det bryter med følgende retningslinjer for innholdssikkerhet: "script-src 'self'" http://localhost:56888/ ". Merk at 'script-src-elem' ikke ble satt eksplisitt, så 'script-src' brukes som reserveplan. (Slutt)
|