特殊文字を HTML に安全に挿入できるようエンコードする
ユーザーが入力したテキストの <、>、&、"、' をエスケープし、XSS やマークアップの破壊を引き起こさずに HTML 内に配置できるようにします。
- 1
HTML で特別な意味を持つ 5 つの文字があります。< と > はタグを区切り、& はエンティティを開始し、" と ' は属性値を区切ります。ユーザーコンテンツでこれらをエスケープせずに放置すると、XSS 攻撃とマークアップの破壊を許します。
- 2 HTML エスケープツール →
<、>、&、引用符を含むテキストを貼り付けます。ツールは < > & " ' に置き換えます。要素コンテンツと属性値の両方で安全です。
- 3 HTML エンティティエンコーダー →
5 つの特殊文字だけでなく、Unicode 全体をエンティティエンコードするには、このツールで非 ASCII 文字もすべて数値エンティティに変換します。
- 4 HTML エンティティデコーダー →
逆の処理:エンティティエンコードされたテキストを貼り付けると、表示や編集のために元の文字が復元されます。
よくある質問
- html-escape と html-entity-encode の違いは?
- html-escape は HTML 特殊文字の 5 文字(< > & " ')のみを変換します。html-entity-encode は非 ASCII 文字もすべて数値エンティティに変換し、完全に ASCII セーフな出力を生成します。
- エスケープだけで XSS を防げますか?
- テキストを要素コンテンツや引用符付き属性に挿入する場合、エスケープで XSS を防げます。ただし、引用符なしの属性、URL 属性(url-encode を使用)、script/style コンテキストには十分ではありません。それらには文脈固有の処理が必要です。