a-blog cms PHP API Reference

PurifierFactory
in package

FinalYes

a-blog cms 向けに設定済みの HTMLPurifier インスタンスを組み立てる。

既存の設定・ブロックエディタ用属性に加えて、iframe ホスト whitelist を扱う:

  • dangerous_tags に 'iframe' が無ければ HTML.SafeIframe を常時有効化し、許可ホストがあれば URI.SafeIframeRegexp をセット (whitelist が空でも src は全て無効化され、iframe を素通りさせない)。'iframe' を明示した場合のみタグごと削除する
  • 提示・無害な属性(loading / referrerpolicy / allowfullscreen)は型付き AttrDef で宣言(CDATA 素通しを避ける)
  • 権限付与系(allow / sandbox)は CDATA で宣言して編集者の入力を post-transform まで温存し、 IframePolicyTransform でホストポリシーの許可リストによりフィルタする
  • カスタム定義キャッシュのため HTML.DefinitionID を固定し、HTML.DefinitionRev をポリシーのハッシュから生成

拡張ポイントは引数のコールバック($configExtension / $definitionExtension)として受け取り、 フック発火(HookFactory 等のグローバル状態アクセス)は呼び出し側に閉じる。これにより本クラスは グローバル状態(config 定数・Hook)に依存せず、引数で受け取った値だけで構築するため単体テスト可能。

Table of Contents

Constants

DEFINITION_ID  = 'acms-html-purifier'
カスタム HTML 定義を識別する固定 ID。HTML.DefinitionRev と組でキャッシュキーになる。
REFERRER_POLICIES  = ['no-referrer', 'no-referrer-when-downgrade', 'origin', 'origin-when-cross-origin', 'same-origin', 'strict-origin', 'strict-origin-when-cross-origin', 'unsafe-url']
referrerpolicy で許可する標準値(Referrer-Policy 仕様の取りうる値)。

Methods

create()  : HTMLPurifier
設定済みの HTMLPurifier を生成する。
addBlockEditorAttributes()  : void
ブロックエディター用の data 属性などを定義する(既存挙動を維持)。
addIframeAttributes()  : void
iframe の許可属性を定義する。

Constants

DEFINITION_ID

カスタム HTML 定義を識別する固定 ID。HTML.DefinitionRev と組でキャッシュキーになる。

private mixed DEFINITION_ID = 'acms-html-purifier'

REFERRER_POLICIES

referrerpolicy で許可する標準値(Referrer-Policy 仕様の取りうる値)。

private array<string|int, string> REFERRER_POLICIES = ['no-referrer', 'no-referrer-when-downgrade', 'origin', 'origin-when-cross-origin', 'same-origin', 'strict-origin', 'strict-origin-when-cross-origin', 'unsafe-url']

Methods

create()

設定済みの HTMLPurifier を生成する。

public static create(IframePolicy $policy, array<string|int, string> $dangerousTags, string $cacheDir[, callable(HTMLPurifier_Config): void|null $configExtension = null ][, callable(HTMLPurifier_HTMLDefinition, HTMLPurifier_Config): void|null $definitionExtension = null ]) : HTMLPurifier
Parameters
$policy : IframePolicy

iframe ホスト whitelist ポリシー

$dangerousTags : array<string|int, string>

HTML.ForbiddenElements に渡す危険タグ(既定 ['script','form']。 'iframe' を含めると whitelist を無視して iframe を常にタグごと削除する後方互換キルスイッチになる)

$cacheDir : string

HTMLPurifier の Serializer キャッシュディレクトリ

$configExtension : callable(HTMLPurifier_Config): void|null = null

カスタム HTML 定義の取得前に呼ばれる config 拡張フック。HTML.Allowed* / URI.* / CSS.* / Attr.* などの設定をここで上書き・追加できる(HTML.* は getDefinition 前に確定させる必要があるため)。

$definitionExtension : callable(HTMLPurifier_HTMLDefinition, HTMLPurifier_Config): void|null = null

カスタム HTML 定義の取得後に呼ばれる定義拡張フック。addAttribute / addElement で要素・属性を 追加できる。定義を変更する場合は $configExtension 側で HTML.DefinitionRev を変更し、 キャッシュを再生成させること(変更がキャッシュに反映されないため)。

Return values
HTMLPurifier

addBlockEditorAttributes()

ブロックエディター用の data 属性などを定義する(既存挙動を維持)。

private static addBlockEditorAttributes(HTMLPurifier_HTMLDefinition $def) : void
Parameters
$def : HTMLPurifier_HTMLDefinition

addIframeAttributes()

iframe の許可属性を定義する。

private static addIframeAttributes(HTMLPurifier_HTMLDefinition $def, IframePolicy $policy) : void

(a) 提示・無害な属性は型付き AttrDef で宣言(CDATA 素通しを避ける)。width/height は HTML5 モジュールが Length で、title は Common で既に宣言済みのため追加しない。 (b) 権限付与系(allow / sandbox)は CDATA で宣言する。CDATA は値を検証しないため、 編集者が書いた生の値がそのまま post-transform(IframePolicyTransform)まで残り、 そこでホストポリシーの許可リストによりフィルタされた値に置き換わる。

Parameters
$def : HTMLPurifier_HTMLDefinition
$policy : IframePolicy

        
On this page

Search results