spring security CSRF防護(hù)的示例代碼
CSRF是指跨站請求偽造(Cross-site request forgery),是web常見的攻擊之一。
從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í)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
IDEA導(dǎo)出jar打包成exe應(yīng)用程序的小結(jié)
這篇文章主要介紹了IDEA導(dǎo)出jar打包成exe應(yīng)用程序,需要的朋友可以參考下2020-08-08
Springboot swagger配置過程詳解(idea社區(qū)版2023.1.4+apache-maven-3
這篇文章主要介紹了Springboot-swagger配置(idea社區(qū)版2023.1.4+apache-maven-3.9.3-bin),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
java 工廠模式的講解及優(yōu)缺點(diǎn)的介紹
這篇文章主要介紹了java 工廠模式的講解及優(yōu)缺點(diǎn)的介紹的相關(guān)資料, 簡單工廠模式,又稱為靜態(tài)工廠方法(Static Factory Method)模式,它屬于類創(chuàng)建型模式,需要的朋友可以參考下2017-08-08
Java一維數(shù)組和二維數(shù)組元素默認(rèn)初始化值的判斷方式
這篇文章主要介紹了Java一維數(shù)組和二維數(shù)組元素默認(rèn)初始化值的判斷方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
Spring Boot中使用AOP統(tǒng)一處理web層異常的方法
這篇文章主要介紹了Spring Boot中使用AOP統(tǒng)一處理web層異常的相關(guān)資料,需要的朋友可以參考下2018-03-03
解決工具接口調(diào)用報(bào)錯(cuò):error:Unsupported Media Type問題
當(dāng)遇到"UnsupportedMediaType"錯(cuò)誤時(shí),意味著HTTP請求的Content-Type與服務(wù)器期望的不匹配,比如服務(wù)器期待接收J(rèn)SON格式數(shù)據(jù),而發(fā)送了純文本格式,常見的Content-Type類型包括text/html、application/json、multipart/form-data等2024-10-10
springboot?vue接口測試HutoolUtil?TreeUtil處理樹形結(jié)構(gòu)
這篇文章主要介紹了springboot?vue接口測試HutoolUtil?TreeUtil處理樹形結(jié)構(gòu),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05

