我有一个符合J2EE的Web应用程序。我使用基于会话的令牌将辅助ID附加到我的应用程序生成的所有传入链接。为了防止我的应用程序遭受CSRF攻击,我在允许用户会话处理后续页面之前验证了辅助ID。
最近,在使用会话复制机制实现时,我观察到在会话故障转移时,生成的secodary id丢失,用户被重定向到登录页面/默认页面。
有关如何确保我的生成的辅助令牌ID不会从复制会话中丢失的任何建议吗?
答案 0 :(得分:0)
表示令牌的对象应该实现java.io.Serializable
,以便在会话复制和会话复制时以会话方式(通过网络,磁盘文件系统等)存储/读取/传输会话时生存。故障转移机制。
这通常已在相关机制的文档中明确提及。我建议再次阅读它,以确保您完成所有工作以使复制/故障转移完美无缺地工作。
以下是Tomcat 6.0 documentation一章中有关该主题的Cluster Basics摘录:
在您的网站中运行会话复制 Tomcat 6.0容器,如下 步骤应该完成:
- 您的所有会话属性都必须实现
java.io.Serializable
- ...
答案 1 :(得分:0)
简单的辅助令牌只能提供有限的CSRF攻击防护。对于我们自己的框架(pulse),我们决定通过在URI上生成自定义哈希代码来签署每个URL,然后使用会话存储的秘密(一个可开箱即可序列化的Long)进行盐析,然后使用SHA进行消化。 256。 这样,当秘密添加到URI时,秘密不会暴露。整个过程很容易通过Annotation(@RequireToken)
来控制