【备忘】textarea 内输出 html 的转义问题

吐槽/反馈/建议:我的咸鱼心    爱发电-@wdssmq

习惯上,在需要使用 <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&gt3333&lt;/b&gt
  ---
  &lt;script&gt;alert(&quot;aaa&quot;);&lt;/script&gt;
</textarea>

HTML 字符实体:

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

本文标题:《【备忘】textarea 内输出 html 的转义问题》作者:沉冰浮水
原文链接:https://www.wdssmq.com/post/20210630871.html
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

可在微信查看或分享至朋友圈。

相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

召唤伊斯特瓦尔