springsecurityCSRF防護(hù)的示例代碼

CSRF是指跨站請求偽造(Cross-site request forgery),是web常見的攻擊之一。

目前累計(jì)服務(wù)客戶上千家,積累了豐富的產(chǎn)品開發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計(jì)水平和技術(shù)實(shí)力,樹立企業(yè)形象,為客戶提供成都做網(wǎng)站、網(wǎng)站制作、網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)、網(wǎng)絡(luò)營銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。成都創(chuàng)新互聯(lián)公司始終以務(wù)實(shí)、誠信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過對領(lǐng)先技術(shù)的掌握、對創(chuàng)意設(shè)計(jì)的研究、對客戶形象的視覺傳遞、對應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。

從Spring Security 4.0開始,默認(rèn)情況下會啟用CSRF保護(hù),以防止CSRF攻擊應(yīng)用程序,Spring Security CSRF會針對PATCH,POST,PUT和DELETE方法進(jìn)行防護(hù)。

我這邊是spring boot項(xiàng)目,在啟用了@EnableWebSecurity注解后,csrf保護(hù)就自動生效了。

所以在默認(rèn)配置下,即便已經(jīng)登錄了,頁面中發(fā)起PATCH,POST,PUT和DELETE請求依然會被拒絕,并返回403,需要在請求接口的時(shí)候加入csrfToken才行。

如果你使用了freemarker之類的模板引擎或者jsp,針對表單提交,可以在表單中增加如下隱藏域:

<input type = “hidden” name = “${_csrf.parameterName}” value = “${_csrf.token}” /> 

如果您使用的是JSON,則無法在HTTP參數(shù)中提交CSRF令牌。相反,您可以在HTTP頭中提交令牌。一個(gè)典型的模式是將CSRF令牌包含在元標(biāo)記中。下面顯示了一個(gè)JSP示例:

<html> 
<head> 
  <meta name = “_csrf” content = “${_csrf.token}” /> 
  <!-- 默認(rèn)標(biāo)題名稱是X-CSRF-TOKEN --> 
  <meta name = “_csrf_header” content = “${_csrf.headerName}” /> 
</ head> 

然后,您可以將令牌包含在所有Ajax請求中。如果您使用jQuery,可以使用以下方法完成此操作:

var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");
$.ajax({
  url:url,
  type:'POST',
  async:false,
  dataType:'json',  //返回的數(shù)據(jù)格式:json/xml/html/script/jsonp/text
  beforeSend: function(xhr) {
    xhr.setRequestHeader(header, token); //發(fā)送請求前將csrfToken設(shè)置到請求頭中
  },
  success:function(data,textStatus,jqXHR){
  }
});

如果你不想啟用CSRF保護(hù),可以在spring security配置中取消csrf,如下:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
  @Override
  protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
        .antMatchers("/login").permitAll()
        .anyRequest().authenticated()
        .and()
        ...
    http.csrf().disable(); //取消csrf防護(hù)
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

網(wǎng)站題目:springsecurityCSRF防護(hù)的示例代碼
URL地址:http://muchs.cn/article28/gjsocp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、關(guān)鍵詞優(yōu)化網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)營銷型網(wǎng)站建設(shè)、云服務(wù)器

廣告

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

外貿(mào)網(wǎng)站制作