【发布时间】:2016-01-17 15:09:34
【问题描述】:
是否有必要保护 JAX-RS 请求免受 CSRF 的攻击?
definition REST 是无状态的,因此不存在会话 id(会话 cookie),因为根本没有会话(另请参阅 https://stackoverflow.com/a/15746639/5277820)。
我的 Spring Security Java 配置:
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Configuration
@Order(1)
public static class JaxRsWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {
@Override
protected void configure(final HttpSecurity http) throws Exception {
http
.antMatcher("/services/**")
.csrf().disable()
.authorizeRequests()
.antMatchers(HttpMethod.OPTIONS, "/services/**").permitAll()
.anyRequest().hasAuthority("ROLE_user")
.and()
.httpBasic()
.and()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}
}
}
}
但我发现例如以下博客:Stateless Spring Security Part 1: Stateless CSRF protection。不幸的是,该博客没有解释为什么需要 CSRF 保护。
是否还有其他没有会话 cookie 的 CSRF 攻击?
【问题讨论】:
-
如果您的网站被 Web 浏览器使用,您只需要保护它们免受 CSRF 影响。如果只是说 curl 使用,那么你就不用担心 CSRF
标签: java rest spring-security jax-rs csrf