【问题标题】:How to know if my CSRF is working?如何知道我的 CSRF 是否正常工作?
【发布时间】:2015-06-11 00:05:55
【问题描述】:

我正在尝试使用 Spring 和 freemarker 作为模板来实现 CSRF。

由于 freemarker 的限制,我必须添加 javascript 函数才能使其工作,就像我在这里看到的那样:

http://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#csrf-include-csrf-token

所以,我添加了这段代码:

$(function () {
var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");
$(document).ajaxSend(function(e, xhr, options) {
    xhr.setRequestHeader(header, token);
});
});

据我所知,它没有添加任何内容,只是添加了一些没有内容的元标记...而且我无法 100% 确定 ajaxSend 正在工作,有什么方法可以知道它正在工作吗?

我读到默认情况下 CSRF 是启用的。而且我有正确的链过滤器(据我所知)。

我正在使用 spring 3.2.8 和 security 3.2.5 以及 freemarker 2.3.2

有什么方法可以验证吗?

谢谢

【问题讨论】:

  • 我希望您的意思是“如何知道我的 CSRF-Protection 是否有效?”
  • 在 Spring security 3.2.5 中,csrf 默认仅对 Java 配置启用。您必须为 XML 显式启用它。 Spring security 3.2.5 reference
  • 但每次我做 应用程序崩溃
  • 发布您的堆栈跟踪/错误会有所帮助

标签: spring csrf


【解决方案1】:

如果您想检查 csrf 过滤器是否阻止恶意请求,请使用诸如 Firefox-Plugin “Tamper-Data”之类的工具,该工具能够在请求发送之前对其进行操作。使用这样的工具,您可以删除或更改发送的 csrf-prevention 令牌。 -- 当您更改或删除它时,服务器必须响应一个错误(未授权或类似的东西) -- 但如果服务器正常填充请求,那么您的 CRSF 保护不起作用。

【讨论】:

    猜你喜欢
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 2014-09-28
    • 2013-06-23
    • 2023-03-24
    相关资源
    最近更新 更多