我想知道在html textarea上打印之前是否真的有必要用htmlentities($ str,ENT_QUOTES,“UTF-8”)来逃避我的字符串。
或者这个人自动逃脱了角色?
答案 0 :(得分:16)
是的,这是必要的。
否则,输入数据中的</textarea>
会使您的标记变得混乱。
<textarea> <--------------------------- Your tag
</textarea> <------------------------ User input
<script>alert("Hello!");</script> <-- User input, XSS injection
</textarea> <-------------------------- Your tag
答案 1 :(得分:4)
textarea元素定义为包含PCDATA,因此不允许在其中使用标记,实体仍然会被解码。
浏览器会执行纠错,但错误纠正不能替代首先没有错误。
某些错误不会得到纠正(因为它们不是语法错误),例如您希望数据为<
或</textarea>
时。
即使您认为某些错误是可以接受的,那么当您使用验证器执行基本QA时,您将产生可能会掩盖您关注的错误的噪音。
简而言之,是的,有必要转义具有特殊含义的字符。但是,只要您直接获得字符编码,htmlspecialchars
就足够了。