Markdown 生HTMLのフィルタリング
最終更新:2026-10-14
生HTMLのフィルタリング GFM 拡張
Markdown が HTML を透過することには XSS のリスクが伴います。<script>、onclick 属性、javascript: リンクはいずれも注入ポイントです。安全なレンダラは危険なタグや属性をフィルタし、その方針はサニタイズと許可リストの 2 種類に分かれます。
| 所属グループ | 境界とルール |
|---|---|
| 仕様レベル | GFM 拡張 |
| 仕様バージョン | CommonMark 0.31.2 + GFM |
📝 構文
(固定の構文なし——フィルタの方針を理解する)
▶ オンライン例
左で Markdown を編集すると右に即時反映
💡 ポイント
⚠️ Warning ユーザー入力をレンダリングする場面(コメント、エディタなど)では必ずサニタイズが必要です。本サイトの md-playground エディタには DOMPurify が組み込まれています。
ℹ️ Note GitHub の許可リストは厳しめです。script、iframe、style はすべて除去され、イベント属性もすべて剥ぎ取られます。
❓ よくある質問
Q サニタイズと許可リストの違いは何ですか?
A サニタイズ(DOMPurify)は危険なノードだけを除去して他を残します。許可リストは指定されたタグだけを通し、それ以外をすべて削除します。
Q コードブロックの中に書いた <script> は実行されますか?
A 実行されません。コードブロックの内容は丸ごとエスケープして表示されるため、元から安全です。
Q 本サイトの方針は何ですか?
A markdown-it の html:true による透過に加え、フロントエンドで DOMPurify によるサニタイズを行う二重防御です。