我想知道它是否真的有必要在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