Spring Security 啟用CSRF防護時,預設只保護會異動資料狀態的HTTP請求方法,
Spring Security CSRF預設保護PATCH
,POST
,PUT
,DELETE
;
不保護GET
,HEAD
,TRACE
,OPTIONS
等Safe Methods。
因為CSRF是以異動資料的方式進行攻擊,而HTTP Safe Methods不異動資料所以無CSRF的疑慮。又機敏資訊如CSRF Token以GET
傳遞會有洩漏的疑慮。
如果希望所有的HTTP methods都要被Spring Security CSRF防護,則在Spring Security配置如下。
package com.abc.demo.config.security;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.util.matcher.AnyRequestMatcher;
@EnableWebSecurity
public class DemoWebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf()
.requireCsrfProtectionMatcher(AnyRequestMatcher.INSTANCE);
}
}
參考:
沒有留言:
張貼留言