我想知道它是否真的有必要在html textarea上打印之前用htmlentities($ str,ENT_QUOTES,“UTF-8”)转义我的字符串。但是我真的需要textarea上的htmlentities吗?
或自动这个逃脱我的角色?
我想知道它是否真的有必要在html textarea上打印之前用htmlentities($ str,ENT_QUOTES,“UTF-8”)转义我的字符串。但是我真的需要textarea上的htmlentities吗?
或自动这个逃脱我的角色?
是的,这是必要的。
否则,输入数据中的</textarea>
会混淆您的标记。
<textarea> <--------------------------- Your tag
</textarea> <------------------------ User input
<script>alert("Hello!");</script> <-- User input, XSS injection
</textarea> <-------------------------- Your tag
textarea元素被定义为包含PCDATA,所以标签不被允许在里面,实体仍然被解码。
浏览器将执行错误更正,但错误更正是首先不存在错误的可靠替代品。
某些错误不会被纠正(因为它们不是语法错误),例如当您希望数据为<
或</textarea>
时。
即使您决定某些错误对您而言可接受,那么当您使用验证程序执行基本QA时,您将产生噪音,从而可能会掩盖您关心的错误。
所以总之,是的,有必要转义具有特殊含义的字符。但是,只要你的字符编码是直的,htmlspecialchars
就足够了。
:)感谢您的光辉榜样! – kwichz 2011-05-08 12:50:16
但是在textarea上,只是提示,如何编码“新行”? \ n吗? CHR(13)? – kwichz 2011-05-08 14:58:07
@kwichz'\ n'应该做的。 – 2011-05-08 15:01:42