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

http
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

js
// 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

Siehe auch