我有这个代码来回显刚刚登录的用户的用户名:
echo $_SESSION['user']['username']."
如果我将代码更改为:
,我是否正确?echo htmlspecialchars $_SESSION['user']['username']."
我保护自己免受低级别XSS的侵害?
答案 0 :(得分:3)
这取决于您输出用户名的位置。如果它在html标签之间,是的。如果它在html属性中,则取决于属性。参见OWASP XSS预防备忘单。
答案 1 :(得分:1)
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);