【问题标题】:Outputting a SESSION following user input - protect against xss在用户输入后输出 SESSION - 防止 xss
【发布时间】:2012-04-11 22:15:40
【问题描述】:

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

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

如果我将代码更改为:

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

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

【问题讨论】:

  • 为什么一开始就允许 XSS 字符进入您的用户名?

标签: php xss


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-15
      • 2022-08-04
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多