国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > Java > 正文

spring security CSRF防護(hù)的示例代碼

2024-07-14 08:43:54
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

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

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

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

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

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

如果您使用的是JSON,則無(wú)法在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請(qǐng)求中。如果您使用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ā)送請(qǐng)求前將csrfToken設(shè)置到請(qǐng)求頭中  },  success:function(data,textStatus,jqXHR){  }});

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

@Configuration@EnableWebSecuritypublic 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ù)  }}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 庆城县| 三明市| 漳平市| 清徐县| 汾阳市| 峨边| 多伦县| 麦盖提县| 乌海市| 彰武县| 谢通门县| 荣成市| 高碑店市| 广元市| 宣城市| 香河县| 思茅市| 奉贤区| 亚东县| 南投县| 仁寿县| 微山县| 霍城县| 三穗县| 长宁区| 伊吾县| 万年县| 昭通市| 双江| 兰溪市| 宁阳县| 东阳市| 扎鲁特旗| 五台县| 定州市| 平利县| 湖口县| 兴文县| 柞水县| 南皮县| 图片|