沉冰浮水

沉冰浮水

做最终到的事,成为最终成为的人!
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

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。