【问题标题】:GWT - Dealing with XSRF/CSRFGWT - 处理 XSRF/CSRF
【发布时间】:2011-06-20 05:17:51
【问题描述】:

我是否正确,如果我在每个 RPC 请求中传递一个自生成的 sessionID,并且只检查这个 sessionID 而不是在 cookie 标头中传递的那个,那么这个会话就不会被恶意网站劫持?我知道您还应该在 cookie 中发送此 sessionID,然后将其与每个请求发送的会话 ID 进行比较以检测 XSRF 攻击,但按照我的方式至少应该可以防止 XSRF 攻击,不是吗?

编辑

我知道 GWT 2.3 通过提供 XSRF 令牌支持来处理 XSRF。可悲的是,我坚持使用 GWT 2.2,因此必须自己处理。

【问题讨论】:

    标签: gwt rpc csrf


    【解决方案1】:

    是的,因为浏览器没有足够的信息来让您的应用程序相信它拥有正确的凭据。在传统的 XSRF 攻击中,浏览器机制本身正在被利用,如果它不知道如何发送额外信息或发送什么信息,那么它就无法工作。

    但是,通过这种方法,我知道恶意攻击者仍然可以破坏您自己生成的 sessionID 并在他们弄清楚机制后立即使用它。

    请参阅this wiki page on cryptographic nonce 了解更多想法。在使用 nonce 时,您正在创建只能在那一刻使用的东西。一旦时间过去,数据要么变得无用(就密码加了时间的密码而言),要么不会被服务器接受。这传统上用于防止重放攻击,因为,如果你能原谅我,nonce 已经过去了。

    【讨论】:

      【解决方案2】:

      您可能想查看OWASP's CSRF Guard Project。他们使用过滤器检查对服务器的每个请求以获取所需的 CRSF 令牌。它非常可配置 - 您可以为 ex 指定防御的各个方面:

      • 不需要保护的网址
      • CRSF Token 的入口点表格 将生成(登录时)
      • 可能发生攻击时的行为 被拾取(重定向、记录)等

      它实际上是一种不需要更改代码的解决方案,其中最新版本还支持对服务器的 AJAX (RPC) 调用。所以我相信这绝对是一个尝试的选择(我目前正在为一个相当大的 GWT 应用程序 POCing 这个解决方案)。

      最后,我相信您已经建立了针对 XSS 的防御。因为如果 XSS 是可能的,XSRF 防御就可以失效(更不用说 XSRF 攻击通常是通过 XSS 发起的)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-22
        • 2021-10-10
        • 2013-07-29
        • 2011-09-09
        • 1970-01-01
        • 2015-05-21
        • 2016-08-28
        • 2013-12-06
        相关资源
        最近更新 更多