メインコンテンツまでスキップ

コンテンツに入力したHTMLタグが消えたり、書き換わったりするのはなぜですか?

入力したHTMLタグが消えたり書き換わったりする原因は、項目の種類によって異なります。
HTMLを入力したとおりに保存・出力したい場合は、項目設定「HTML」を利用し、[全てのタグを許可する]を有効にしてください。

WYSIWYG項目の場合​

WYSIWYG項目では、エディタ(CKEditor)が入力されたHTMLを独自の形式で解釈し直します。そのため、中身が空の<span>タグが消されるなど、HTMLが自動で正規化される場合があります。

この正規化はコンテンツ編集画面のエディタで行われるため、WYSIWYG項目の[全てのタグを許可する]を有効にしても、エディタによる正規化は防げません。

また、[全てのタグを許可する]が無効の場合は、保存時にサーバー側のサニタイズ処理により許可されていないタグ(<script>タグなど)が除去されます。

テキスト項目の場合​

テキスト項目では、管理画面から保存すると、許可されていないタグ(<script>タグなど)が除去されます。
テキスト項目には[全てのタグを許可する]の設定はありません。HTMLを保存したい場合はHTML項目を利用してください。

HTMLを厳密に管理する方法​

HTML項目にはWYSIWYGエディタによる正規化がありません。[全てのタグを許可する]を有効にすると、サーバー側のサニタイズ処理も行われなくなり、<script>タグを含め、入力したHTMLがそのまま保存されます。

  1. [コンテンツ定義]で対象のコンテンツ定義を開き、[項目追加]をクリックして新しい項目を追加します。追加した項目の項目設定で「HTML」を選択します。 Image from Gyazo

  2. 項目設定の[入力制限]で[全てのタグを許可する]を有効にします。 Image from Gyazo

  3. コンテンツ定義を保存します。

設定項目の詳細はコンテンツ定義で利用できる項目設定一覧を参照してください。

注意

[全てのタグを許可する]を有効にすると、<script>タグなどの危険なHTMLもそのまま保存されます(XSS対策のサニタイズ処理が行われません)。信頼できる担当者・データのみを扱う項目で有効にしてください。
また、保存した値をフロントエンドでv-htmlなどを使ってそのまま出力すると、XSSの原因になります。出力する値の内容に注意してください。

注記

[全てのタグを許可する]を有効にしていても、HTML項目のデフォルト値に<script>タグは利用できません。

関連ドキュメント​


サポート

お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。