CSP: trusted-types
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。
HTTP の Content-Security-Policy
(CSP) における trusted-types
Experimental
ディレクティブは、既知の DOM XSS シンクの使用を、文字列の代わりにスプーフィング不可能な型付きの値のみを受け入れる定義済みの関数のセットに制限するようにユーザエージェントに指示します。
require-trusted-types-for
ディレクティブと一緒に使用することで、作者は DOM への値の書き込みを守るルールを定義することができ、 DOM XSS 攻撃の対象をウェブアプリケーションのコードベースの小さな孤立した部分に減らすことができ、監視やコードレビューが容易になります。このディレクティブは、 Trusted Types API から trustedTypes.createPolicy
で作成された信頼できる型のポリシー名の許可リストを宣言します。
構文
Content-Security-Policy: trusted-types;
Content-Security-Policy: trusted-types 'none';
Content-Security-Policy: trusted-types <policyName>;
Content-Security-Policy: trusted-types <policyName> <policyName> 'allow-duplicates';
- <policyName>
-
有効なポリシー名は英数字、または "
-#=_/@.%
" のうちのいずれかのみからなります。ポリシー名に星印 (*
) を使用すると、ユーザーエージェントは任意の一意なポリシー名を許可するようになります('allow-duplicates
' はそれをさらに緩和することができます)。 'none'
-
Trusted Type ポリシーを作成しない(*<policyName>*を指定しないのと同じ)。
'allow-duplicates'
-
既に使用されている名前でポリシーを作成することを可能にします。
例
// Content-Security-Policy: trusted-types foo bar 'allow-duplicates';
if (typeof trustedTypes !== "undefined") {
const policyFoo = trustedTypes.createPolicy("foo", {});
const policyFoo2 = trustedTypes.createPolicy("foo", {});
const policyBaz = trustedTypes.createPolicy("baz", {}); // Throws and dispatches a SecurityPolicyViolationEvent.
}
仕様書
Specification |
---|
Trusted Types # trusted-types-csp-directive |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
Content-Security-Policy
- クロスサイトスクリプティング (XSS)
- Prevent DOM-based cross-site scripting vulnerabilities with Trusted Types
- Trusted Types with DOMPurify XSS sanitizer
- Trusted Types polyfill