但是我真的需要一个textarea的htmlentities?

时间:2011-05-08 12:23:34

标签: php html escaping html-entities

我想知道在html textarea上打印之前是否真的有必要用htmlentities($ str,ENT_QUOTES,“UTF-8”)来逃避我的字符串。

或者这个人自动逃脱了角色?

2 个答案:

答案 0 :(得分:16)

是的,这是必要的。

否则,输入数据中的</textarea>会使您的标记变得混乱。

<textarea> <--------------------------- Your tag

  </textarea> <------------------------ User input      
  <script>alert("Hello!");</script> <-- User input, XSS injection

</textarea> <-------------------------- Your tag

答案 1 :(得分:4)

textarea元素定义为包含PCDATA,因此不允许在其中使用标记,实体仍然会被解码。

浏览器会执行纠错,但错误纠正不能替代首先没有错误。

某些错误不会得到纠正(因为它们不是语法错误),例如您希望数据为&lt;</textarea>时。

即使您认为某些错误是可以接受的,那么当您使用验证器执行基本QA时,您将产生可能会掩盖您关注的错误的噪音。

简而言之,是的,有必要转义具有特殊含义的字符。但是,只要您直接获得字符编码,htmlspecialchars就足够了。