在用户输入后输出SESSION - 防止xss

时间:2012-04-11 22:15:41

标签: php xss

我有这个代码来回显刚刚登录的用户的用户名:

echo $_SESSION['user']['username']."

如果我将代码更改为:

,我是否正确?
echo htmlspecialchars $_SESSION['user']['username']."

我保护自己免受低级别XSS的侵害?

2 个答案:

答案 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);