網頁

2019/11/20

Spring Security CSRF預設保護的HTTP請求方法 CSRF default protect HTTP methods

Spring Security 啟用CSRF防護時,預設只保護會異動資料狀態的HTTP請求方法,

Spring Security CSRF預設保護PATCHPOSTPUTDELETE
不保護GETHEADTRACEOPTIONSSafe 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);
    }

}

參考:

沒有留言:

張貼留言