Struts Token机制实现与应用
Struts 的令牌机制,说白了就是个用来防重复提交的“小护身符”,挺适合做表单安全控制的。如果你平时在搞 Java Web 开发,尤其是还在用 Struts 框架,那这个机制值得你用用。它不光能防止用户手抖点两下提交按钮,还能挡住一些常见的 CSRF 攻击,配置也不复杂。
Struts 的 token 拦截器和tokenSession 拦截器配合使用,基本就搞定了整个令牌流程。一个生成,一个存着防丢,这组合还挺顺。只需要在struts.xml
里加一下这俩拦截器就行,代码也不多:
<;interceptor name="tokenSession" class="org.apache.struts2.interceptor.TokenSessionStoreInterceptor" />
,在你想保护的Action
类里加上@TokenSave
注解,一访问表单页面就会自动生成一个令牌扔进会话里:
@TokenSave
public class MyAction extends ActionSupport {
// 表单逻辑
}
表单页面也别忘了加上隐藏字段,Struts 会自动生成一段令牌字段代码,用
标签就行:
<input type="submit" value="提交" />
<;/s:form>;
提交时,拦截器会自动比对令牌。如果不对,比如用户重复点提交按钮,就会抛TokenException
。你可以在Action
里这个异常,跳回页面或提示出错:
@Override
public String execute() throws Exception {
try {
return SUCCESS;
} catch (TokenException e) {
return INPUT;
}
}
几个小提醒哦:
- 每个表单建议用不同令牌,避免互相干扰
- 表单提交成功后,记得清掉令牌,别让旧的还留着
- 别在 URL 或日志里暴露令牌内容,容易泄露
Struts 的这个安全机制虽然不是什么黑科技,但胜在简单实用。如果你项目中有提交按钮,不想让用户点两次都跑同一个求,或者担心 CSRF,直接用这个就挺合适。
struts令牌.rar
预估大小:43个文件
struts令牌
文件夹
~WRL2148.tmp
26KB
menu
文件夹
.mystrutsdata
254B
src
文件夹
com
文件夹
kxc
文件夹
struts
文件夹
ApplicationResources.properties
79B
form
文件夹
1.04MB
文件大小:
评论区