CSRF 原理以及 Struts2 令牌校验防御攻略解析

本文深入探讨了CSRF(跨站请求伪造)的原理,并详细解析了Struts2框架中如何通过令牌校验策略进行防御。通过在struts.xml中配置TokenInterceptor拦截器,可以有效防止重复提交问题。同时,文章提供了相关源码分析链接,帮助理解其实现机制,特别是针对AJAX请求的令牌传递策略。
摘要由CSDN通过智能技术生成
struts2 token 不仅能够有效防止表单重复提交,而且还可以进行 CSRF 验证
CSRF 攻击原理如下图:

CSRF攻击原理图
CSRF 攻击原理图


事实上,B 可能也是一个良性网站,只是被黑客 XSS 劫持了而已。用户实在冤枉啊:我没有上乱七八糟的网站,怎么还是中招了呢?
struts2 token 校验原理如图所示:

Struts2 token验证原理图
Struts2 token 验证原理图


对照 CSRF 攻击原理图,可以看到,虽然 a.jsp 将这个令牌值返回给浏览器,但是 B 是无法拿到这个令牌的具体值的,或者说 B 只能够通过去请求 A 才能拿到一个令牌,但这样就失去了伪造用户请求的目的,因为 session 不一致了。所以 b.action 也就不再处理这个伪造的请求,截断了 CSRF 的流程如下图所示:

Struts2 token截断了CSRF攻击原理图
Struts2 token截断了CSRF攻击原理图


了解了原理,那就干活吧。结果发现很多非 form 表单提交的请求都被成功拦截了,比如原有的 ajax 请求(js / jQuery / DWR)、页面的 href 请求都无法正
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值