spring security CSRF 問題 Invalid CSRF Token 'null' was found on ......

個人問題記錄

Spring Security在集成Spring Boot的微服務框架后,實現(xiàn)了權(quán)限控制撮弧。但是在使用 postman 進行調(diào)用的時候出現(xiàn)這個問題.


image.png

科普一下,CSRF(Cross-site request forgery跨站請求偽造菲嘴,也被稱為“One Click Attack” 或者Session Riding迄委,攻擊方通過偽造用戶請求訪問受信任站點』鳎可以這么理解CSRF攻擊:攻擊者盜用了你的身份十拣,以你的名義向第三方網(wǎng)站發(fā)送惡意請求

原因

Spring Security 4.0之后,默認是開啟CSRF志鹃。不得不說夭问,CSRF和RESTful技術(shù)有沖突。CSRF默認支持的方法: GET|HEAD|TRACE|OPTIONS曹铃,不支持POST缰趋。

我們知道,客戶端與服務端在基于http協(xié)議在交互的數(shù)據(jù)的時候,由于http協(xié)議本身是無狀態(tài)協(xié)議秘血,后來引進了cookie的 方式進行記錄服務端和客戶端的之間交互的狀態(tài)和標記味抖。cookie里面一般會放置服務端生成的session id(會話ID)用來識別客戶端訪問服務端過 程中的客戶端的身份標記。

比較關(guān)鍵的一點是

如果這個http請求是get方式發(fā)起的請求灰粮,意味著它只是訪問服務器 的資源仔涩,僅僅只是查詢,沒有更新服務器的資源谋竖,所以對于這類請求红柱,spring security的防御策略是允許的,

如果這個請求是通過post請求發(fā)起的蓖乘, 那么spring security是默認攔截這類請求的锤悄,因為這類請求是帶有更新服務器資源的危險操作,如果惡意第三方可以通過劫持session id來更新 服務器資源嘉抒,那會造成服務器數(shù)據(jù)被非法的篡改零聚,所以這類請求是會被Spring security攔截的,在默認的情況下些侍,spring security是啟用csrf 攔截功能的隶症,這會造成,在跨域的情況下岗宣,post方式提交的請求都會被攔截無法被處理(包括合理的post請求)蚂会,前端發(fā)起的post請求后端無法正常 處理,雖然保證了跨域的安全性耗式,但影響了正常的使用胁住,如果關(guān)閉csrf防護功能,雖然可以正常處理post請求刊咳,但是無法防范通過劫持session id的非法的post請求彪见,所以spring security為了正確的區(qū)別合法的post請求,采用了token的機制娱挨。

在跨域的場景下余指,客戶端訪問服務端會首先發(fā)起get請求,這個get請求在到達服務端的時候跷坝,服務端的Spring security會有一個過濾 器 CsrfFilter去檢查這個請求酵镜,如果這個request請求的http header里面的X-CSRF-COOKIE的token值為空的時候,服務端就好自動生成一個 token值放進這個X-CSRF-COOKIE值里面探孝,客戶端在get請求的header里面獲取到這個值笋婿,如果客戶端有表單提交的post請求,則要求客戶端要 攜帶這個token值給服務端顿颅,在post請求的header里面設置_csrf屬性的token值缸濒,提交的方式可以是ajax也可以是放在form里面設置hidden 屬性的標簽里面提交給服務端,服務端就會根據(jù)post請求里面攜帶的token值進行校驗,如果跟服務端發(fā)送給合法客戶端的token值是一樣的庇配,那么 這個post請求就可以受理和處理斩跌,如果不一樣或者為空,就會被攔截捞慌。由于惡意第三方可以劫持session id耀鸦,而很難獲取token值,所以起到了 安全的防護作用啸澡。

  1. 解決
    原因找到了:spring Security 3默認關(guān)閉csrf袖订,Spring Security 4默認啟動了csrf。
    解決方案:

如果不需要采用csrf嗅虏,可禁用security的csrf

Java注解方式配置:

加上 .csrf().disable()即可洛姑。

修改前WebSecurityConfig.java

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
            .antMatchers("/", "/home").permitAll()
            .and()
            .formLogin()
            .loginPage("/login").permitAll()
            .and()
            .logout().logoutUrl("/logout")
            .logoutSuccessUrl("/hello")
            .permitAll();
    http.addFilterBefore(customizeFilterSecurityInterceptor, FilterSecurityInterceptor.class)
            .csrf().disable();  //增加
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市皮服,隨后出現(xiàn)的幾起案子楞艾,更是在濱河造成了極大的恐慌,老刑警劉巖龄广,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件硫眯,死亡現(xiàn)場離奇詭異,居然都是意外死亡择同,警方通過查閱死者的電腦和手機两入,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來敲才,“玉大人谆刨,你說我怎么就攤上這事」榻铮” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵刁岸,是天一觀的道長脏里。 經(jīng)常有香客問我,道長虹曙,這世上最難降的妖魔是什么迫横? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮酝碳,結(jié)果婚禮上矾踱,老公的妹妹穿的比我還像新娘。我一直安慰自己疏哗,他們只是感情好呛讲,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般贝搁。 火紅的嫁衣襯著肌膚如雪吗氏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天雷逆,我揣著相機與錄音弦讽,去河邊找鬼。 笑死膀哲,一個胖子當著我的面吹牛往产,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播某宪,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼仿村,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了缩抡?” 一聲冷哼從身側(cè)響起奠宜,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瞻想,沒想到半個月后压真,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體热幔,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡洪燥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年汤纸,在試婚紗的時候發(fā)現(xiàn)自己被綠了朝卒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斗锭。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡茶行,死狀恐怖椭盏,靈堂內(nèi)的尸體忽然破棺而出蚌斩,到底是詐尸還是另有隱情呵俏,我是刑警寧澤堆缘,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站普碎,受9級特大地震影響吼肥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜麻车,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一缀皱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧动猬,春花似錦啤斗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽免钻。三九已至,卻和暖如春臂痕,著一層夾襖步出監(jiān)牢的瞬間伯襟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工握童, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留姆怪,地道東北人。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓澡绩,卻偏偏與公主長得像稽揭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子肥卡,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355