Spring security 3.2:如何绕过CSRFFilter中的所有ajax请求

时间:2015-08-07 06:40:03

标签: java spring security csrf

鉴于在Spring security 3.2中,为了防止CSRF攻击,我们必须包含CSRF令牌。它也适用于ajax请求。对于ajax,我们必须包含标头令牌。但这似乎是很多返工。覆盖CSRFFilter是一种方式。有没有更好的方法可以绕过令牌检查ajax请求

1 个答案:

答案 0 :(得分:0)

此代码将帮助您实现这一目标,并且由于您尚未粘贴配置,因此很难提供帮助。

 http.csrf().requireCsrfProtectionMatcher(new RequestMatcher() {
        private Pattern allowedMethods = Pattern.compile("^(GET|HEAD|TRACE|OPTIONS)$");
        private RegexRequestMatcher apiMatcher = new RegexRequestMatcher("/v[0-9]*/.*", null);

        @Override
        public boolean matches(HttpServletRequest request) {
            // No CSRF due to allowedMethod
            if(allowedMethods.matcher(request.getMethod()).matches())
                return false;

            // No CSRF due to api call
            if(apiMatcher.matches(request))
                return false;

            // CSRF for everything else that is not an API call or an allowedMethod
            return true;
        }
    });

如果这是您想要的,请告诉我。