【发布时间】:2013-03-17 16:01:14
【问题描述】:
我做了这个功能
function echoSanitizer($var)
{
$var = htmlspecialchars($var, ENT_QUOTES);
$var = nl2br($var, false);
$var = str_replace(array("\\r\\n", "\\r", "\\n"), "<br>", $var);
$var = htmlspecialchars_decode($var);
return stripslashes($var);
}
它会不会受到 xss 攻击?
- htmlspecialchars 带走html标签
- 新行的 nl2br
- str_replace 将 \r\n 转换为
<br> - htmlspecialchars_decode 转换回原始字符li>
- stripslashes 到 STRIPSLASHES
为什么我需要所有这些?因为我想预览用户输入的内容,并且我想让他们看到所见即所得的东西。一些输入来自 textarea 框,我希望保留空格,因此需要 nl2br。
通常我问的是 (htmlspecialchars_decode) 因为它对我来说是新的。安全吗?总的来说,如果我用它来显示用户输入,我保证的功能是安全的吗?
(此场景中不涉及数据库。)
【问题讨论】:
-
不要自己动手,用HTML Purifier
-
@MarkoD 我实际上读过它(很多)并且它有一个很好的代表。但这真的是要走的路吗?
-
是的。另外,请阅读制作此网站的人制作自己的html sanitizer 的经验
-
你是唯一一个愿意发表评论的人,所以我会接受你的建议。 Tnx @MarkoD !