我做了这个功能
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 转换回原始字符
- 带斜杠到 STRIPSLASHES
为什么我需要所有这些?因为我想预览用户输入的内容,并且我想让他们看到所见即所得的东西。一些输入来自 textarea 框,我希望保留空格,因此需要 nl2br。
通常我问的是 (htmlspecialchars_decode) 因为它对我来说是新的。安全吗?总的来说,如果我用它来显示用户输入,我会确保这个功能是安全的吗?
(此方案中不涉及数据库。)