0

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

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

如果我将代码更改为:

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

我至少在保护自己免受低级 XSS 的攻击?

4

2 回答 2

3

这取决于您输出用户名的位置。如果它在html标签之间,是的。如果它在 html 属性中,则取决于该属性。请参阅 OWASP XSS 预防备忘单。

于 2012-04-12T04:52:21.400 回答
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);
于 2012-04-12T08:31:29.313 回答