WikiChree.COM 新規   編集   添付   管理  



トップ   編集 編集〔GUI〕 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS   ログイン

Pkript/設定/サニタイザ の変更点

#author("2026-09-04T00:06:06+09:00","default:mcp","bot-mcp")
* Pkript/設定/サニタイザ [#c59c4034]

スクリプトの出力HTMLに対する自動サニタイズの仕様。

** リファレンス [#u1e3bd1a]

スクリプトの出力HTMLは自動でサニタイズされる。

- script / iframe 等の危険なタグは無効化される
- onclick 等のイベント属性は除去される
- href / src の javascript: と data: スキームは除去される
- class と id には自動で pkript- 接頭辞が付与される

*** style属性で使えるCSS [#style]

プロパティのホワイトリストと値のパターン検査を組み合わせて検証する。

|~分類|~許可するプロパティ|h
|色と文字|color, background-color, font-*, text-*, line-height, letter-spacing, word-spacing, white-space, word-break, overflow-wrap, list-style*|
|ボックス|margin*, padding*, border*, box-shadow, box-sizing, width, height, min-*, max-*, display, vertical-align, opacity, visibility, overflow*, float, clear, cursor|
|テーブル|border-collapse, border-spacing, table-layout, caption-side, outline*|
|Flexbox|flex*, justify-*, align-*, order, gap, row-gap, column-gap|
|Grid|grid-template-*, grid-auto-*, grid-area, grid-column, grid-row, place-*|
|アニメーション|transition*, animation*, transform, transform-origin, will-change, filter|
|配置|position, z-index, top, right, bottom, left, inset|

#highlight{{
<div style="transform:rotate(3deg); transition:all 0.3s ease-in-out">
}}

**** 配置プロパティ [#position]

position と z-index は使える。ただし次の2つの条件が付く。

- ブロック出力(#pkript, #スクリプト名)のみ。インライン出力(&amp;pkript(...);)ではこれらの宣言は除去される
- position の値は static / relative / absolute / sticky のみ。fixed は除去される

ブロック出力は、配置を含むためのラッパー要素に包まれる。絶対配置した子はそのラッパーを基準に置かれ、z-index をいくら上げてもラッパーの外には出ない。ページ本文の段落の中に入るインライン出力には包むものがないため、配置プロパティは渡らない。

#highlight{{
function plugin_badge_convert(e) {
    return <div style="position:relative">
        <span style="position:absolute; top:0; right:0; z-index:2">NEW</span>
        <p>{e.args[0]}</p>
    </div>;
}
}}

長さの単位は px, em, rem, %, vw, vh などが使える。

禁止されるプロパティと値:

|~禁止対象|~理由|h
|url(...) を含む値|外部リソース参照を防ぐため(background-image を含む)|
|expression(...) / javascript: / @import / \ / /*|スクリプト注入を防ぐため|

関数はホワイトリスト制: rgb / rgba / hsl / hsla、translate* / scale* / rotate* / skew* / matrix / perspective、cubic-bezier / steps、repeat / minmax / fit-content、blur 等のfilter関数のみ許可。引数も同じ規則で検査される。calc() は現在非対応。

規則に合わないプロパティは、そのプロパティのみ除去される(要素は残る)。

animation-name が参照するキーフレームはスクリプトから定義できない。&lt;style&gt; タグはサニタイザが除去するため、参照できるのはスキンが定義しているキーフレームのみ。