CSRF漏洞現(xiàn)狀
CSRF(Cross-site request forgery)跨站請(qǐng)求偽造,也被稱(chēng)為One Click Attack或者Session Riding,通??s寫(xiě)為CSRF或XSRF,是一種對(duì)網(wǎng)站的惡意利用。盡管聽(tīng)起來(lái)像跨站腳本(XSS),但它與XSS非常不同,XSS利用站點(diǎn)內(nèi)的信任用戶(hù),而CSRF則通過(guò)偽裝成受信任用戶(hù)的請(qǐng)求來(lái)利用受信任的網(wǎng)站。與XSS攻擊相比,CSRF攻擊往往不大流行(因此對(duì)其進(jìn)行防范的資源也相當(dāng)稀少)和難以防范,所以被認(rèn)為比XSS更具危險(xiǎn)性。
CSRF是一種依賴(lài)web瀏覽器的、被混淆過(guò)的代理人攻擊(deputy attack)。
POM依賴(lài)
<!-- 模板引擎 freemarker --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId></dependency><!-- Security (只使用CSRF部分) --><dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId></dependency>
配置過(guò)濾器
@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } /** * 配置CSRF過(guò)濾器 * * @return {@link org.springframework.boot.web.servlet.FilterRegistrationBean} */ @Bean public FilterRegistrationBean<CsrfFilter> csrfFilter() { FilterRegistrationBean<CsrfFilter> registration = new FilterRegistrationBean<>(); registration.setFilter(new CsrfFilter(new HttpSessionCsrfTokenRepository())); registration.addUrlPatterns("/*"); registration.setName("csrfFilter"); return registration; }}在form請(qǐng)求中添加CSRF的隱藏字段
<input name="${(_csrf.parameterName)!}" value="${(_csrf.token)!}" type="hidden" />在AJAX請(qǐng)求中添加header頭
xhr.setRequestHeader("${_csrf.headerName}", "${_csrf.token}");jQuery的Ajax全局配置
jQuery.ajaxSetup({ "beforeSend": function (request) { request.setRequestHeader("${_csrf.headerName}", "${_csrf.token}"); }});以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選