亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringSecurity框架下實現(xiàn)CSRF跨站攻擊防御的方法

 更新時間:2019年12月11日 10:26:31   作者:字母哥博客  
CSRF是一種網(wǎng)絡攻擊方式,也可以說是一種安全漏洞,這種安全漏洞在web開發(fā)中廣泛存在。這篇文章主要介紹了SpringSecurity框架下實現(xiàn)CSRF跨站攻擊防御,需要的朋友可以參考下

一、什么是CSRF

很多朋友在學習Spring Security的時候,會將CORS(跨站資源共享)和CSRF(跨站請求偽造)弄混,以為二者是一回事。其實不是,先解釋一下:

CORS(跨站資源共享)是局部打破同源策略的限制,使在一定規(guī)則下HTTP請求可以突破瀏覽器限制,實現(xiàn)跨站訪問。

CSRF是一種網(wǎng)絡攻擊方式,也可以說是一種安全漏洞,這種安全漏洞在web開發(fā)中廣泛存在。

當我們使用Spring Security的時候,這種CSRF漏洞默認的被防御掉了。但是你會發(fā)現(xiàn)在跨域請求的情況下,我們的POST、DELETE、PUT等HTTP請求方式失效了。所以在筆者之前的文章中,我們使用http.csrf.disable()暫時關閉掉了CSRF的防御功能,但是這樣是不安全的,那么怎么樣才是正確的做法呢?就是本文需要向大家介紹的內(nèi)容。

二、CSRF的攻擊方式

通常的CSRF攻擊方式如下:

你登錄了網(wǎng)站A,攻擊者向你的網(wǎng)站A賬戶發(fā)送留言、偽造嵌入頁面,帶有危險操作鏈接。

當你在登錄狀態(tài)下點擊了攻擊者的連接,因此該鏈接對你網(wǎng)站A的賬戶進行了操作。

這個操作是你在網(wǎng)站A中主動發(fā)出的,并且也是針對網(wǎng)站A的HTTP鏈接請求,同源策略無法限制該請求。

三、如何防御CSRF攻擊

為系統(tǒng)中的每一個連接請求加上一個token,這個token是隨機的,服務端對該token進行驗證。破壞者在留言或者偽造嵌入頁面的時候,無法預先判斷CSRF token的值是什么,所以當服務端校驗CSRF token的時候也就無法通過。所以這種方法在一定程度上是靠譜的。

但是如果你的電腦中毒,網(wǎng)絡信息被劫持使用token的方法仍然不安全。所以沒有絕對的安全,道高一次魔高一丈。作為開發(fā)者,我們就做到我們應該做到的。

跳轉(zhuǎn)提示:當用戶不小心點擊了第三方連接,合格的應用應該提示用戶相關的風險!由用戶自己確認是否真的要跳轉(zhuǎn)或者執(zhí)行第三方連接,或者就干脆不讓非可信連接在留言區(qū)等地方存在。

四、Spring Security的CSRF token攻擊防護

首先,我們要先開啟防護功能,在用戶登陸操作之后,生成的CSRF Token就保存在cookies中。

public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
 @Override
 protected void configure(HttpSecurity http) throws Exception {
  http.csrf()
   .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
   .ignoringAntMatchers("/authentication");
  .and()
  ...
 }
}

使用CookieCsrfTokenRepository生成CSRF Token放入cookie,并設置cookie的HttpOnly=false,允許js讀取該cookie。

使用ignoringAntMatchers開放一些不需要進行CSRF防護的訪問路徑,比如:登錄授權。

至此,我們生成了CSRF token保存在了cookies中,瀏覽器向服務端發(fā)送的HTTP請求,都要將CSRF token帶上,服務端校驗通過才能正確的響應。這個校驗的過程并不需要我們自己寫代碼實現(xiàn),Spring Security會自動處理。但是我們需要關注前端代碼,如何正確的攜帶CSRF token。

五、前端請求攜帶CSRF Token的方式

在thymeleaf模板中可以使用如下方式,在發(fā)送HTTP請求的時候攜帶CSRF Token。如果是前后端分離的應用,或者其他模板引擎,酌情從cookies中獲取CSRF Toekn。

5.1.在Header中攜帶CSRF token

var headers = {};
headers['X-CSRF-TOKEN'] = "${_csrf.token}";
$.ajax({ 
 headers: headers, 
});

5.2.直接作為參數(shù)提交。

$.ajax({ 
 data: {  
  "_csrf": "${_csrf.token}"  
 }
});

5.3.form表單的隱藏字段

<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}">

總結(jié)

以上所述是小編給大家介紹的SpringSecurity框架下實現(xiàn)CSRF跨站攻擊防御,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關文章

  • 關于Java集合框架面試題(含答案)下

    關于Java集合框架面試題(含答案)下

    Java集合框架為Java編程語言的基礎,也是Java面試中很重要的一個知識點。這里,我列出了一些關于Java集合的重要問題和答案。
    2015-12-12
  • 詳談HashMap和ConcurrentHashMap的區(qū)別(HashMap的底層源碼)

    詳談HashMap和ConcurrentHashMap的區(qū)別(HashMap的底層源碼)

    下面小編就為大家?guī)硪黄斦凥ashMap和ConcurrentHashMap的區(qū)別(HashMap的底層源碼)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Java實現(xiàn)雪花算法的原理

    Java實現(xiàn)雪花算法的原理

    這篇文章主要介紹了Java實現(xiàn)雪花算法的原理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • IDEA 非常重要的一些設置項(一連串的問題差點讓我重新用回 Eclipse)

    IDEA 非常重要的一些設置項(一連串的問題差點讓我重新用回 Eclipse)

    這篇文章主要介紹了IDEA 非常重要的一些設置項(一連串的問題差點讓我重新用回 Eclipse),本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • 有關ServletConfig與ServletContext的訪問

    有關ServletConfig與ServletContext的訪問

    下面小編就為大家?guī)硪黄嘘PServletConfig與ServletContext的訪問。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • SpringBoot整合Kaptcha實現(xiàn)圖形驗證碼功能

    SpringBoot整合Kaptcha實現(xiàn)圖形驗證碼功能

    這篇文章主要介紹了SpringBoot整合Kaptcha實現(xiàn)圖形驗證碼功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • 劍指Offer之Java算法習題精講二叉樹專題篇下

    劍指Offer之Java算法習題精講二叉樹專題篇下

    跟著思路走,之后從簡單題入手,反復去看,做過之后可能會忘記,之后再做一次,記不住就反復做,反復尋求思路和規(guī)律,慢慢積累就會發(fā)現(xiàn)質(zhì)的變化
    2022-03-03
  • Spring基于注解的緩存聲明深入探究

    Spring基于注解的緩存聲明深入探究

    spring boot對緩存支持非常靈活,我們可以使用默認的EhCache,也可以整合第三方的框架,只需配置即可,下面這篇文章主要給大家介紹了關于SpringBoot學習之基于注解緩存的相關資料,需要的朋友可以參考下
    2022-08-08
  • SSH框架網(wǎng)上商城項目第10戰(zhàn)之搭建商品類基本模塊

    SSH框架網(wǎng)上商城項目第10戰(zhàn)之搭建商品類基本模塊

    這篇文章主要為大家詳細介紹了SSH框架網(wǎng)上商城項目第10戰(zhàn)之搭建商品類基本模塊的相關資料,有一定的實用性,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 一篇文章帶你了解java接口與繼承

    一篇文章帶你了解java接口與繼承

    這篇文章主要介紹了Java接口和繼承操作,結(jié)合具體實例形式分析了Java接口和繼承與使用的相關原理、操作技巧與注意事項,需要的朋友可以參考下
    2021-08-08

最新評論