真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringBoot+springsecurity與CSRF有關(guān)的幾個(gè)問(wèn)題

1、問(wèn)題

? 開(kāi)啟 csrf 后 列表頁(yè)面沒(méi)有數(shù)據(jù)

在集安等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需定制,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)營(yíng)銷推廣,成都外貿(mào)網(wǎng)站制作,集安網(wǎng)站建設(shè)費(fèi)用合理。

? 頁(yè)面console.log(403)

HTTP Status 403-Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.

2、科普

? 首先,科普一下,什么是"CSRF"?

? 這是一個(gè)web應(yīng)用安全的問(wèn)題,CSRF(Cross-site request forgery)跨站請(qǐng)求偽造,也被稱為“One Click Attack” 或者Session Riding,***方通過(guò)偽造用戶請(qǐng)求訪問(wèn)受信任站點(diǎn)。

客戶端與服務(wù)端在基于http協(xié)議在交互的數(shù)據(jù)的時(shí)候,由于http協(xié)議本身是無(wú)狀態(tài)協(xié)議,后來(lái)引進(jìn)了cookie的 方式進(jìn)行記錄服務(wù)端和客戶端的之間交互的狀態(tài)和標(biāo)記。cookie里面一般會(huì)放置服務(wù)端生成的session id(會(huì)話ID)用來(lái)識(shí)別客戶端訪問(wèn)服務(wù)端過(guò) 程中的客戶端的身份標(biāo)記。

? 再科普一下,什么事"跨域" ?

? 同一個(gè)ip、同一個(gè)網(wǎng)絡(luò)協(xié)議、同一個(gè)端口,三者都滿足就是同一個(gè)域,否則就有跨域問(wèn)題 ,在跨域 的情況下 session id可能會(huì)被惡意第三方劫持,此時(shí)劫持這個(gè)session id的第三方會(huì)根據(jù)這個(gè)session id向服務(wù)器發(fā)起請(qǐng)求,此時(shí)服務(wù)器收到這個(gè)請(qǐng)求會(huì) 認(rèn)為這是合法的請(qǐng)求,并返回根據(jù)請(qǐng)求完成相應(yīng)的服務(wù)端更新。

3、spring security 中的幾個(gè)關(guān)鍵點(diǎn)

? 1)如果這個(gè)http請(qǐng)求是通過(guò)get方式發(fā)起的請(qǐng)求,意味著它只是訪問(wèn)服務(wù)器 的資源,僅僅只是查詢,沒(méi)有更新服務(wù)器的資源,所以對(duì)于這類請(qǐng)求,spring security的防御策略是允許的;

? 2)如果這個(gè)http請(qǐng)求是通過(guò)post請(qǐng)求發(fā)起的, 那么spring security是默認(rèn)攔截這類請(qǐng)求的,因?yàn)檫@類請(qǐng)求是帶有更新服務(wù)器資源的危險(xiǎn)操作,如果惡意第三方可以通過(guò)劫持session id來(lái)更新 服務(wù)器資源,那會(huì)造成服務(wù)器數(shù)據(jù)被非法的篡改,所以這類請(qǐng)求是會(huì)被Spring security攔截的,在默認(rèn)的情況下,spring security是啟用csrf 攔截功能的,這會(huì)造成,在跨域的情況下,post方式提交的請(qǐng)求都會(huì)被攔截?zé)o法被處理(包括合理的post請(qǐng)求),前端發(fā)起的post請(qǐng)求后端無(wú)法正常 處理,雖然保證了跨域的安全性,但影響了正常的使用,如果關(guān)閉csrf防護(hù)功能,雖然可以正常處理post請(qǐng)求,但是無(wú)法防范通過(guò)劫持session id的非法的post請(qǐng)求,所以spring security為了正確的區(qū)別合法的post請(qǐng)求,采用了token的機(jī)制 。

? 3)我在科普下:spring Security 3默認(rèn)關(guān)閉csrf,Spring Security 4默認(rèn)啟動(dòng)了csrf

? 4)如果不采用csrf,可禁用security的csrf ,如下

@Override
protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                ………………
                .csrf().disable();
 }
## 4、重點(diǎn)解決問(wèn)題 

我想開(kāi)啟且有效,如下配置:

JAVA配置端該怎么做

@Override
protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                ………………
         .csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
 }

###H5端怎么做

說(shuō)明下網(wǎng)上方法大致有三種,我這里結(jié)合我們自己的平臺(tái)(SpringBoot[v1.5.12]+SpringSecurity[v4.2.5]+ Thymeleaf[v2.1.3])是這么做的

//全局index頁(yè)面 不需要每個(gè)頁(yè)面 都寫(xiě)


var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");
$(document).ajaxSend(function(e, xhr, options) {
        xhr.setRequestHeader(header, token);
  }); 

單獨(dú)AJAX提交思考局部刷新

var headers = {};
    headers['X-CSRF-TOKEN'] = "[[${_csrf.token}]]"; 
    //參數(shù)
    headers: headers

當(dāng)前文章:SpringBoot+springsecurity與CSRF有關(guān)的幾個(gè)問(wèn)題
分享路徑:http://weahome.cn/article/pcpgep.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部