如何在Grails中防止XSRF?

如何在Grails中防止XSRF?,grails,csrf,Grails,Csrf,在Grails中如何防范XSRF攻击。我看到表单支持useToken的概念(我认为应该足够了)。但是,remoteForm或其他与AJAX相关的请求不支持此功能 另外,是否有一种方法可以反转useToken的功能,使其始终被使用,而不是逐个启用?您可以尝试查看标记的源代码。它使用创建令牌并将其存储在会话中。基于的解析,应该可以对同一页面上的所有表单使用相同的令牌。我没有尝试过,但理论上,您只需要在表单上手动创建一个隐藏字段,并在该字段中生成令牌。我们已经在before筛选器中向请求对象注入了一个

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


另外,是否有一种方法可以反转useToken的功能,使其始终被使用,而不是逐个启用?

您可以尝试查看标记的源代码。它使用创建令牌并将其存储在会话中。基于的解析,应该可以对同一页面上的所有表单使用相同的令牌。我没有尝试过,但理论上,您只需要在表单上手动创建一个隐藏字段,并在该字段中生成令牌。

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

如果该隐藏值不存在或过时——我们使用时间戳作为有效负载——我们会给客户端一个错误状态

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

我知道,但这是一个总比没有好的开始,特别是如果你不允许空引用者。这很容易添加为过滤器。