成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

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

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

創(chuàng)新互聯(lián)公司是一家專業(yè)提供鐵東企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、成都網(wǎng)站設(shè)計、成都外貿(mào)網(wǎng)站建設(shè)、H5開發(fā)、小程序制作等業(yè)務(wù)。10年已為鐵東眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。

一、什么是CSRF

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

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

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

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

二、CSRF的攻擊方式

通常的CSRF攻擊方式如下:

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

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

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

三、如何防御CSRF攻擊

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

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

跳轉(zhuǎn)提示:當(dāng)用戶不小心點擊了第三方連接,合格的應(yīng)用應(yīng)該提示用戶相關(guān)的風(fēng)險!由用戶自己確認(rè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,并設(shè)置cookie的HttpOnly=false,允許js讀取該cookie。

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

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

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

在thymeleaf模板中可以使用如下方式,在發(fā)送HTTP請求的時候攜帶CSRF Token。如果是前后端分離的應(yīng)用,或者其他模板引擎,酌情從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跨站攻擊防御,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對創(chuàng)新互聯(lián)網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

網(wǎng)頁題目:SpringSecurity框架下實現(xiàn)CSRF跨站攻擊防御的方法
網(wǎng)站鏈接:http://jinyejixie.com/article8/iisoop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)、用戶體驗、網(wǎng)站建設(shè)、微信公眾號、定制網(wǎng)站外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
安阳市| 松溪县| 苍山县| 日喀则市| 湖州市| 同德县| 镶黄旗| 宜宾市| 新化县| 湄潭县| 隆昌县| 曲靖市| 田林县| 常德市| 通辽市| 旬阳县| 揭东县| 广德县| 昌宁县| 定南县| 平塘县| 新巴尔虎左旗| 沐川县| 绥芬河市| 裕民县| 收藏| 盱眙县| 湘潭县| 鄯善县| 颍上县| 惠东县| 田阳县| 华蓥市| 册亨县| 慈利县| 射洪县| 项城市| 民权县| 江山市| 金溪县| 新沂市|