Der HTTP-Response-Header Content-Security-Policy ermöglicht es der Website, zu steuern, welche Ressourcen der User Agent für eine bestimmte Seite lädt. Mit Ausnahme von Sonderfällen besteht das Richtlinienset hauptsächlich darin, die Quell- und Skript-Endpunkte des Servers anzugeben. Dies hilft, Crosssite-Scripting-Angriffe zu verhindern
Dokumentation:Der Hyperlink-Login ist sichtbar.
Dieser Artikel beschreibt die Content Security Policy des W3C, kurz CSP. Wie der Name schon sagt, steht diese Spezifikation im Zusammenhang mit Inhaltssicherheit und dient hauptsächlich dazu, zu definieren, welche Ressourcen eine Seite laden darf, und um das Auftreten von XSS zu reduzieren.
Frühe Chrome unterstützte CSP über den X-WebKit-CSP-Response-Header, während Firefox und IE X-Content-Security-Policy unterstützten, und Chrome25 sowie Firefox23 begannen, die Standard-Content-Security-Policy zu unterstützen.
Sensible Informationen über Webanwendungen, wie Benutzernamen, Passwörter, Maschinennamen und/oder sensible Dateistandorte, können gesammelt werden Anfänger können dazu gebracht werden, sensible Informationen wie Benutzernamen, Passwörter, Kreditkartennummern, Sozialversicherungsnummern usw. anzugeben
Zuerst erstellen wir ein neues Projekt ASP.NET MVC, erstellen ein neues JS-Skript und laden dynamisch den JS-Code der Baidu-Statistiken, wie folgt:
Wie in der obigen Abbildung gezeigt, können wir den JS-Skriptcode sehen, der erfolgreich in einen Drittanbieter (Baidu) eingeführt wurde, wenn es bösartigen Code im Drittanbieter-JS gibt, wie zum Beispiel das Stehlen von Cookies, das Ändern von Inhalten, das Überbrücken von Links usw.
Wie kann ich die Einführung unsicherer JS-Skripte von Drittanbietern verhindern?
Workaround
AntwortkopfFügen Sie "Inhalts-Sicherheitsrichtlinie" hinzuZum Beispiel:
Direktive | Beispiel für den Befehlswert | illustrieren | default-src | 'Selbst' cnd.a.com | Definieren Sie die Standardladerichtlinie für alle Arten von Ressourcen (JS, IMAGE, CSS, Webschrift, AJAX-Anfragen, iframes, Multimedia usw.) und verwenden Sie die Standardrichtlinie für bestimmte Ressourcentypen, wenn keine separate definierte Richtlinie vorhanden ist. | script-src | 'Selbst' js.a.com | Definiere eine Laderichtlinie für JavaScript. | style-src | 'Selbst' css.a.com | Definiere eine Laderichtlinie für einen Stil. | img-src | 'Selbst' img.a.com | Definieren Sie eine Laderichtlinie für Bilder. | connect-src | 'selbst' | Laderichtlinien für Anfragen von Ajax, WebSockets usw. Wenn nicht erlaubt, simuliert der Browser eine Antwort mit Status 400. | font-src | font.a.com | Laderichtlinie für WebFont. | Objekt-SRC | 'selbst' | <object><embed> <applet> Laderichtlinien für Plugins wie Flash wurden für Tags wie , oder eingeführt. | Media-SRC | media.a.com | <audio> <video> Ladestrategien für HTML-Multimedia eingeführt für Tags wie oder . | frame-src | 'selbst' | Ladepolitik für Frames. | Sandbox | Allow-Formen | Aktiviere Sandbox (ähnlich der Sandbox-Eigenschaft eines iframes) für die angeforderte Ressource. | report-uri | /report-uri | Teilen Sie dem Browser mit, an welche Adresse Loginformationen gesendet werden soll, falls die angeforderte Ressource durch die Richtlinie nicht erlaubt ist. Spezial: Wenn du möchtest, dass der Browser nur Protokolle meldet und nichts blockiert, kannst du stattdessen den Header Content-Security-Policy-Report-Only verwenden. |
Lassen Sie uns die Web.config-Datei des Projekts modifizieren, um einen benutzerdefinierten Antwort-Header wie folgt hinzuzufügen:
Wiederholen Sie das Projekt wie unten gezeigt:
Der Browser hat erfolgreich das Laden von Drittanbieter-JS-Skripten blockiert:
Wurde das Laden des Skripts 'https://hm.baidu.com/hm.js?6dbaac17dfeb2840b5b09d2dff6d2319' verweigert, weil es gegen die folgende Richtlinie zur Inhaltssicherheitsrichtlinie verstößt: "script-src 'self'" http://localhost:56888/ ". Beachten Sie, dass 'script-src-elem' nicht explizit festgelegt wurde, sodass 'script-src' als Rückgriff verwendet wird. (Ende)
|