ScriptPolicyTransform
extends HTMLPurifier_AttrTransform
in package
FinalYes
script の src を、ホスト whitelist に一致するものだけに限定する post-transform。
許可ホスト外の src は属性ごと落とす。script の content model は PurifierFactory で
子要素を持てない形に固定しているため、src を失った script は中身の無い <script></script> として
残るだけになる。
Why not URI.SafeIframeRegexp 相当の仕組みに任せないか: HTMLPurifier が script 向けに用意して
いる HTML.SafeScripting は「src の完全一致リスト」で、iframe と同じ host[/pathPrefix] 形式
(クエリ文字列やバージョン違いのパスを含む実際の埋め込みスクリプト)を表現できない。
判定を AllowedHostRegexp に寄せることで iframe と同一のホスト解釈を共有する。
HTMLPurifier はカスタム HTML 定義をシリアライズしてキャッシュするため、本クラスは プレーンなデータ(ScriptPolicy)のみを保持し、シリアライズ可能に保つ。
Table of Contents
Properties
Methods
- __construct() : mixed
- transform() : array<string|int, mixed>
Properties
$policy
private
ScriptPolicy
$policy
Methods
__construct()
public
__construct(ScriptPolicy $policy) : mixed
Parameters
- $policy : ScriptPolicy
transform()
public
transform(array<string|int, mixed> $attr, HTMLPurifier_Config $config, HTMLPurifier_Context $context) : array<string|int, mixed>
Parameters
- $attr : array<string|int, mixed>
-
属性の連想配列
- $config : HTMLPurifier_Config
- $context : HTMLPurifier_Context
Return values
array<string|int, mixed> —処理後の属性配列