CSRF漏洞现状
CSRF(Cross-site request forgery)
跨站请求伪造,也被称为 One Click Attack
或者 Session Riding
,通常缩写为 CSRF
或 XSRF
,是一种对网站的恶意利用。尽管听起来像跨站脚本( XSS
),但它与 XSS
非常不同, XSS
利用站点内的信任用户,而 CSRF
则通过伪装成受信任用户的请求来利用受信任的网站。与 XSS
攻击相比, CSRF
攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比 XSS
更具危险性。
CSRF
是一种依赖web浏览器的、被混淆过的代理人攻击( deputy attack
)。
POM依赖
<!-- 模板引擎 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>
配置过滤器
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
/**
* 配置CSRF过滤器
*
* @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请求中添加CSRF的隐藏字段
<input name="${(_csrf.parameterName)!}" value="${(_csrf.token)!}" type="hidden" />
在AJAX请求中添加header头
xhr.setRequestHeader("${_csrf.headerName}", "${_csrf.token}");
jQuery的Ajax全局配置
jQuery.ajaxSetup({
"beforeSend": function (request) {
request.setRequestHeader("${_csrf.headerName}", "${_csrf.token}");
}
});
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
移动交互设计精髓
班格 (Cameron Banga)、温霍尔德 (Josh Weinhold) / 傅小贞、张颖鋆 / 电子工业出版社 / 2015-4-1 / CNY 89.00
越来越多的人正涌入移动应用领域,而设计和体验将是移动应用成败的关键。作者通过上百款应用的设计实践,系统化地梳理了移动应用的设计方法论,在理解用户、跨平台和适配设计、移动组件应用、界面视觉感染力、简约设计等方面都进行了深入阐述。此外,作者还介绍了一些非常实用的移动设计工具,分享了设计师该如何与开发工程师协同工作,以及如何收集用户反馈、甄别版本迭代的更新需求等。 《移动交互设计精髓——设计完美的......一起来看看 《移动交互设计精髓》 这本书的介绍吧!