我有这样的代码呼应的是,刚刚登录的用户的用户名:输出会议之后,用户输入 - 防止XSS
echo $_SESSION['user']['username']."
我会就在想,如果我改变我的代码到:
echo htmlspecialchars $_SESSION['user']['username']."
我正在保护自己从低级别的XSS至少?
我有这样的代码呼应的是,刚刚登录的用户的用户名:输出会议之后,用户输入 - 防止XSS
echo $_SESSION['user']['username']."
我会就在想,如果我改变我的代码到:
echo htmlspecialchars $_SESSION['user']['username']."
我正在保护自己从低级别的XSS至少?
默认情况下,函数htmlspecialchars不会对单引号(')进行编码,如果您的用户名在HTML属性中或javascript内部回显,则会出现XSS!
例如:
<script>
name='$YOUR_NAME_HERE$';
</script>
我们可以设置用户名 ';警报(' XSS'); // 因此,浏览器将生成的HTML内容是这样
<script>
name='';alert('xss');//';
</script>
我对你的建议是:
echo htmlspecialchars($_SESSION['user']['username'], ENT_QUOTES);
这取决于您输出用户名的位置。如果它在html标签之间,是的。如果它在html属性中,则取决于属性。请参阅OWASP XSS预防备忘单。
为什么你首先允许支持XSS的字符进入你的用户名? – Amber 2012-04-11 22:17:54