Content-Security-Policy: require-trusted-types-for Richtlinie

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Die HTTP-Content-Security-Policy (CSP) require-trusted-types-for Richtlinie weist Benutzeragenten an, die Daten, die an DOM XSS-Senkenfunktionen übergeben werden, zu kontrollieren, wie zum Beispiel den Element.innerHTML-Setter.

Wenn verwendet, akzeptieren diese Funktionen nur nicht manipulierbare, getypte Werte, die durch Trusted Type-Policies erstellt wurden, und lehnen Zeichenfolgen ab. Zusammen mit der trusted-types Richtlinie, die die Erstellung von Trusted Type-Policies schützt, ermöglicht dies Autoren, Regeln zu definieren, die das Schreiben von Werten in den DOM bewachen und somit die Angriffsfläche von DOM XSS auf kleine, isolierte Teile des Webanwendungs-Codebase reduzieren. Dies erleichtert deren Überwachung und Code-Review.

Syntax

http
Content-Security-Policy: require-trusted-types-for 'script';
'script'

Verbietet die Verwendung von Zeichenfolgen mit DOM XSS-Injektionssenkenfunktionen und erfordert übereinstimmende Typen, die durch Trusted Type-Policies 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

Siehe auch