【问题标题】:ajax call vulnerable to xss attackajax 调用易受 xss 攻击
【发布时间】:2012-07-04 13:54:34
【问题描述】:

我有一个简单的 Web 应用程序,我在其中使用来自 jsp 页面的 ajax(通过 post)调用 java servlet。在 servlet 中,我从数据库中获取数据并制定 JSON 并在 jsp 页面中检索。然后,我使用 eval 函数解析 json 并使用 innerHTML 属性在分区中显示数据。不知何故,这种方法似乎容易受到 xss 攻击。有人可以提供一些关于如何在这个用例中防止 XSS 攻击的指示吗?

【问题讨论】:

  • 不只是存储在后端数据库中的用户发布的 cmets
  • 你为什么用 EVAL 开头?
  • 是的 eval 是罪魁祸首,同意。你能建议 eval 的替代方案,以便我可以将我的 json 转换回 javascript 对象。
  • 也许你可以使用innerText 而不是innerHTML
  • 我不认为 innerText 让我可以灵活地将 html 和 css 添加到我正在更新的部门。如果我在这里错了,请纠正我。

标签: ajax security web xss


【解决方案1】:

这听起来像DOM Based XSSpreventing DOM Based XSS有几种方式。您必须对服务器或客户端上的数据进行 html 编码。数据库中的 HTML 编码数据应始终避免,因为它会改变数据的值,并会影响数据的排序方式等。 XSS is an output problem 所以它应该通过构建 HTML 的代码来解决,在你的情况下是 JavaScript。

【讨论】:

    【解决方案2】:

    较新的浏览器支持 JSON.parse()。对于较旧的浏览器,请使用 json2.js。

    您还应该对 JSON 进行正确编码,以便值不会超出引号等。找到一个合适的 json 编码器并在服务器端使用它。

    【讨论】:

    • 他正在将值写入页面。
    • 是的,但是直接使用 eval 很容易成为一个大问题
    猜你喜欢
    • 2016-04-18
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多