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
                                
                                
                                
                            
评论区