a-blog cms PHP API Reference

IframePolicy
in package

FinalYes

iframe のホスト whitelist と、ホストごとの capability 許可リスト(allow / sandbox)を表す値オブジェクト。

config(1行1ホストのパイプ区切り host[|allow[|sandbox]])を正規化して保持し、 src からホストを解決して「そのホストで編集者が要求できる capability の上限(許可リスト)」を持つ。 実際に付与される値は、編集者が iframe に書いた allow / sandbox のうち、この許可リストに 含まれるトークンだけを残したもの(フィルタ)で、IframePolicyTransform を通じて付与される。 許可リストに無いトークンは常に落ち、編集者が何も書かなければ何も付与されない(最小権限)。

Table of Contents

Constants

ALLOWED_FEATURES  = ['accelerometer', 'autoplay', 'camera', 'clipboard-read', 'clipboard-write', 'display-capture', 'encrypted-media', 'fullscreen', 'geolocation', 'gyroscope', 'magnetometer', 'microphone', 'midi', 'payment', 'picture-in-picture', 'screen-wake-lock', 'web-share', 'xr-spatial-tracking']
許可する Permissions-Policy 機能トークン(allow 属性)。 config で指定された未知トークンはここで弾く(ポリシー外の付与を防ぐ)。
ALLOWED_SANDBOX_TOKENS  = ['allow-downloads', 'allow-forms', 'allow-modals', 'allow-orientation-lock', 'allow-pointer-lock', 'allow-popups', 'allow-popups-to-escape-sandbox', 'allow-presentation', 'allow-same-origin', 'allow-scripts', 'allow-storage-access-by-user-activation', 'allow-top-navigation', 'allow-top-navigation-by-user-activation', 'allow-top-navigation-to-custom-protocols']
許可する sandbox トークン。config で指定された未知トークンはここで弾く。
CACHE_VERSION  = 1
キャッシュ世代。属性定義・ポリシー解釈の実装を変更したときに増やすと HTML.DefinitionRev が変わり、HTMLPurifier のキャッシュが再生成される。

Properties

$entries  : array<int, array{host: string, allow: list, sandbox: list}>
正規化済みのホストポリシー。

Methods

__construct()  : mixed
fromConfig()  : self
config の `html_purifier_iframe_allowed_hosts` からポリシーを生成する。
fromLines()  : self
1行1ホストのパイプ区切り定義からポリシーを生成する。
hosts()  : array<int, string>
許可ホスト名の一覧(URI.SafeIframeRegexp 生成に用いる)。
isEnabled()  : bool
iframe の許可(ホストが1つ以上ある)か。
resolveAllow()  : string|null
src にマッチするホストの許可リストで、編集者が要求した allow をフィルタする。
resolveSandbox()  : string|null
src にマッチするホストの許可リストで、編集者が要求した sandbox をフィルタする。
revision()  : int
ポリシー内容から決定的に算出する整数リビジョン。 HTML.DefinitionRev に用い、ポリシー変更時にキャッシュを再生成させる。
filterTokens()  : array<int, string>
区切り文字で分割したトークンのうち、許可リストに含まれるものだけを返す。
resolve()  : array{host: string, allow: list, sandbox: list}|null
src にマッチする最初のホストポリシーを返す。

Constants

ALLOWED_FEATURES

許可する Permissions-Policy 機能トークン(allow 属性)。 config で指定された未知トークンはここで弾く(ポリシー外の付与を防ぐ)。

private array<string|int, string> ALLOWED_FEATURES = ['accelerometer', 'autoplay', 'camera', 'clipboard-read', 'clipboard-write', 'display-capture', 'encrypted-media', 'fullscreen', 'geolocation', 'gyroscope', 'magnetometer', 'microphone', 'midi', 'payment', 'picture-in-picture', 'screen-wake-lock', 'web-share', 'xr-spatial-tracking']

ALLOWED_SANDBOX_TOKENS

許可する sandbox トークン。config で指定された未知トークンはここで弾く。

private array<string|int, string> ALLOWED_SANDBOX_TOKENS = ['allow-downloads', 'allow-forms', 'allow-modals', 'allow-orientation-lock', 'allow-pointer-lock', 'allow-popups', 'allow-popups-to-escape-sandbox', 'allow-presentation', 'allow-same-origin', 'allow-scripts', 'allow-storage-access-by-user-activation', 'allow-top-navigation', 'allow-top-navigation-by-user-activation', 'allow-top-navigation-to-custom-protocols']

CACHE_VERSION

キャッシュ世代。属性定義・ポリシー解釈の実装を変更したときに増やすと HTML.DefinitionRev が変わり、HTMLPurifier のキャッシュが再生成される。

private mixed CACHE_VERSION = 1

Properties

$entries

正規化済みのホストポリシー。

private array<int, array{host: string, allow: list, sandbox: list}> $entries

Methods

__construct()

public __construct(array<int, array{host: string, allow: list, sandbox: list}> $entries) : mixed
Parameters
$entries : array<int, array{host: string, allow: list, sandbox: list}>

fromConfig()

config の `html_purifier_iframe_allowed_hosts` からポリシーを生成する。

public static fromConfig() : self
Return values
self

fromLines()

1行1ホストのパイプ区切り定義からポリシーを生成する。

public static fromLines(array<string|int, mixed> $lines) : self

書式: host[|allow[|sandbox]]

  • allow: セミコロン区切りの Permissions-Policy 機能トークン(例: fullscreen; encrypted-media
  • sandbox: スペース区切りの sandbox トークン(例: allow-scripts allow-same-origin
Parameters
$lines : array<string|int, mixed>
Return values
self

hosts()

許可ホスト名の一覧(URI.SafeIframeRegexp 生成に用いる)。

public hosts() : array<int, string>
Return values
array<int, string>

isEnabled()

iframe の許可(ホストが1つ以上ある)か。

public isEnabled() : bool
Return values
bool

resolveAllow()

src にマッチするホストの許可リストで、編集者が要求した allow をフィルタする。

public resolveAllow(string $src, string $rawAllow) : string|null
Parameters
$src : string

iframe の src

$rawAllow : string

編集者が iframe に書いた allow の生値(セミコロン区切り)

Return values
string|null

付与する allow 値(要求が無い/全て許可リスト外なら null)

resolveSandbox()

src にマッチするホストの許可リストで、編集者が要求した sandbox をフィルタする。

public resolveSandbox(string $src, string $rawSandbox) : string|null
Parameters
$src : string

iframe の src

$rawSandbox : string

編集者が iframe に書いた sandbox の生値(スペース区切り)

Return values
string|null

付与する sandbox 値(要求が無い/全て許可リスト外なら null)

revision()

ポリシー内容から決定的に算出する整数リビジョン。 HTML.DefinitionRev に用い、ポリシー変更時にキャッシュを再生成させる。

public revision() : int
Return values
int

filterTokens()

区切り文字で分割したトークンのうち、許可リストに含まれるものだけを返す。

private static filterTokens(string $raw, non-empty-string $delimiter, array<string|int, string> $allowedTokens) : array<int, string>
Parameters
$raw : string
$delimiter : non-empty-string
$allowedTokens : array<string|int, string>
Return values
array<int, string>

resolve()

src にマッチする最初のホストポリシーを返す。

private resolve(string $src) : array{host: string, allow: list, sandbox: list}|null
Parameters
$src : string
Return values
array{host: string, allow: list, sandbox: list}|null

        
On this page

Search results