CSP: require-trusted-types-for
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig, bevor Sie diese produktiv verwenden.
Der HTTP-Header Content-Security-Policy
(CSP) require-trusted-types-for
Experimentell
Direktive weist Benutzeragenten an, die Daten zu kontrollieren, die an DOM-XSS-Senkenfunktionen, wie den Element.innerHTML
-Setter, übergeben werden.
Bei Verwendung akzeptieren diese Funktionen nur unverfälschbare, typisierte Werte, die durch Trusted Type-Richtlinien erstellt wurden, und lehnen Zeichenketten ab. Zusammen mit der trusted-types
Direktive, die die Erstellung von Trusted Type-Richtlinien schützt, ermöglicht dies Autor*innen, Regeln zu definieren, die das Schreiben von Werten in das DOM absichern und somit die Angriffsfläche für DOM-XSS auf kleine, isolierte Teile des Anwendungscodes reduzieren. Dies erleichtert ihre Überwachung und Codeüberprüfung.
Syntax
Content-Security-Policy: require-trusted-types-for 'script';
'script'
-
Verbietet die Verwendung von Zeichenketten mit DOM-XSS-Injektion-Senkenfunktionen und verlangt passende Typen, die durch Trusted Type-Richtlinien erstellt wurden.
Beispiele
// Content-Security-Policy: require-trusted-types-for 'script'; trusted-types foo;
const attackerInput = '<svg onload="alert(/cross-site-scripting/)" />';
const el = document.createElement("div");
if (typeof trustedTypes !== "undefined") {
// Create a policy that can create TrustedHTML values
// after sanitizing the input strings with DOMPurify library.
const sanitizer = trustedTypes.createPolicy("foo", {
createHTML: (input) => DOMPurify.sanitize(input),
});
el.innerHTML = sanitizer.createHTML(attackerInput); // Puts the sanitized value into the DOM.
el.innerHTML = attackerInput; // Rejects a string value; throws a TypeError.
}
Spezifikationen
Specification |
---|
Trusted Types # require-trusted-types-for-csp-directive |
Browser-Kompatibilität
BCD tables only load in the browser