沉冰浮水

沉冰浮水

做最终到的事,成为最终成为的人!
github
bilibili
mastodon
zhihu
douban

「水坑」textarea内のHTMLのエスケープの問題

通常、編集可能なコンテンツを表示するために <input type="text" />または<textarea></textarea>を使用する場合、その中の HTML エンティティをエスケープします。

<input type="text" value="<?php echo htmlspecialchars($strText); ?>" />

<textarea><?php echo htmlspecialchars($strLongText); ?></textarea>

前者については、属性値として出力されるため、エスケープする必要があります。

後者については、以下のコードを例にとると、両方のテキストボックスはブラウザで正しくレンダリングされますが、エスケープしない場合、<script>alert("aaaa");</script>の前に </textarea>を挿入すると、JS コードが実行されます。

したがって、結論として、エスケープした形式の使用を推奨します。

<!-- 未エスケープ -->
<textarea name="text1" id="text1" cols="35" rows="10">
  <b>3333</b>
  ---
  <script>alert("aaaa");</script>
</textarea>
<!-- エスケープした形式 -->
<textarea name="text2" id="text2" cols="35" rows="10">
  &lt;b&gt;3333&lt;/b&gt;
  ---
  &lt;script&gt;alert(&quot;aaa&quot;);&lt;/script&gt;
</textarea>

HTML 文字エンティティ:

https://www.w3school.com.cn/html/html_entities.asp

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。