2011-05-08 68 views

回答

15

是的,这是必要的。

否则,输入数据中的</textarea>会混淆您的标记。

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

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

</textarea> <-------------------------- Your tag 
+0

:)感谢您的光辉榜样! – kwichz 2011-05-08 12:50:16

+0

但是在textarea上,只是提示,如何编码“新行”? \ n吗? CHR(13)? – kwichz 2011-05-08 14:58:07

+0

@kwichz'\ n'应该做的。 – 2011-05-08 15:01:42

4

textarea元素被定义为包含PCDATA,所以标签不被允许在里面,实体仍然被解码。

浏览器将执行错误更正,但错误更正是首先不存在错误的可靠替代品。

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

即使您决定某些错误对您而言可接受,那么当您使用验证程序执行基本QA时,您将产生噪音,从而可能会掩盖您关心的错误。

所以总之,是的,有必要转义具有特殊含义的字符。但是,只要你的字符编码是直的,htmlspecialchars就足够了。