我有这段代码来回显刚刚登录的用户的用户名:
echo $_SESSION['user']['username']."
如果我将代码更改为:
echo htmlspecialchars $_SESSION['user']['username']."
我至少在保护自己免受低级 XSS 的攻击?
这取决于您输出用户名的位置。如果它在html标签之间,是的。如果它在 html 属性中,则取决于该属性。请参阅 OWASP XSS 预防备忘单。
htmlspecialchars函数默认不编码单引号('),如果你的用户名在html属性或javascript内部回显,就会出现XSS!
例如:
<script>
name='$YOUR_NAME_HERE$';
</script>
我们可以设置用户名为';alert('xss');//这样浏览器就会生成这样的html内容
<script>
name='';alert('xss');//';
</script>
我给你的建议是:
echo htmlspecialchars($_SESSION['user']['username'], ENT_QUOTES);