【问题标题】:How do you protect against XSRF in Grails?在 Grails 中如何防止 XSRF?
【发布时间】:2016-04-07 21:12:06
【问题描述】:

如何在 Grails 中防御 XSRF 攻击。我看到表单支持 useToken 的概念(我认为应该足够了)。但是,remoteForm 或其他 AJAX 相关请求不支持此功能。

另外,有没有办法反转 useToken 的功能,使其始终被使用而不是根据具体情况启用?

【问题讨论】:

标签: grails csrf


【解决方案1】:

您可以尝试查看<g:form> 标签的源代码。它使用SynchronizerToken 创建令牌并将其存储在会话中。根据this issue 的分辨率,应该可以对同一页面上的所有表单使用相同的标记。我没有尝试过,但理论上您只需要在表单上手动创建一个隐藏字段并在该字段中生成令牌。

【讨论】:

    【解决方案2】:

    我们在前置过滤器中向请求对象注入了一个隐藏值,并使用特定密钥对该值进行加密。然后,我们将该 request.token 值注入网站上的每个表单,当我们收到一个 POST 时,我们有一个 before 过滤器来验证该隐藏字段是否存在,并且它的值可以由相同的密钥解码。

    如果该隐藏值不存在或者它是陈旧的——我们使用时间戳作为有效负载——我们给客户端一个错误状态。

    这是上述方法的替代方法,我们使用它,因为我们不使用我们网站上的会话来简化负载平衡。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-19
      • 2017-07-02
      • 2013-04-29
      • 2011-01-09
      • 2010-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多