【问题标题】:Need to prevent XSS attacks?需要防止 XSS 攻击?
【发布时间】:2013-01-14 04:27:44
【问题描述】:

我正在开发一个允许用户自定义网页的项目。目前,该用户可以将 HTML 添加到页面。根据我的研究,XSS 攻击似乎通常用于劫持会话/窃取 cookie。我的问题是,如果不允许访问者向这个页面添加任何内容,并且如果自定义页面的用户是唯一可以登录的人,是否有必要防止 XSS 攻击?我的想法是否定的,因为唯一可以窃取的 cookie 是他或她自己的。

【问题讨论】:

  • 只要使用htmlentities($VulnerableString, ENT_QUOTES, 'UTF-8')
  • 对于 cookie,您应该实现类似 salted token 并在每个请求中检查一个
  • 嗯。对于 cookie,您必须将它们设置为仅 HTTP。
  • 如果你只有一个用户,你可能是正确的,但如果你有多个,那么任何用户都可以通过这种攻击窃取其他用户的身份。
  • 在显示用户生成的内容时转义您的字符串,并按照 metal_fan 的评论进行操作。主要是需要防止用户在页面上写Javascript,这是XSS最大的漏洞之一。

标签: php javascript xss


【解决方案1】:

Maaaybe,因为听起来您说只有用户 A 可以看到用户 A 提交的 HTML,但您仍然必须小心,因为我们假设用户 A 知道所有正在提交的数据代表他或她。考虑以下攻击。

  1. 诱骗用户 A 访问我的恶意网站。
  2. 自动向您的网站提交包含恶意 HTML 的表单。
  3. 将用户 A 重定向到您的网站,在那里他们将看到我的恶意 HTML,该 HTML 窃取了他们的 cookie 并将其发送给我。

也许如果你实施了阻止我代表用户提交的 CSRF 保护,你会没事的,但这仍然有点可怕。如果用户需要能够使用 HTML(但他们通常不需要),请考虑使用像 HTML Purifier 这样的工具,它允许已知安全的 HTML 但阻止潜在的恶意 HTML:这样,最合法用例可能会得到满足,但 XSS 几乎是不可能的,即使其他安全系统崩溃了。它易于实施,而且只需付出很小的代价即可获得额外的安全级别。

【讨论】:

  • 感谢您的回答。在我的例子中,用户 A 可以创建一个对访问者 A、访问者 B、访问者 C 等可见的页面。但是,只有用户 A 是具有登录信息的用户(访问者只是访问者)。为了防止您描述的攻击,我将实施 HttpOnly cookie 并在一段时间不活动后自动注销。理论上,这应该会使 CSRF 攻击变得非常困难。最后,感谢 HTML Purifier 的链接。
  • 明白了:所以只有一个特权用户?我想这是相当安全的......但是,要非常小心:/
猜你喜欢
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 2018-07-16
相关资源
最近更新 更多