使用Tomcat和Apache进行CSRF令牌和会话复制

时间:2010-03-18 08:51:03

标签: java session tomcat replication

我有一个符合J2EE的Web应用程序。我使用基于会话的令牌将辅助ID附加到我的应用程序生成的所有传入链接。为了防止我的应用程序遭受CSRF攻击,我在允许用户会话处理后续页面之前验证了辅助ID。

最近,在使用会话复制机制实现时,我观察到在会话故障转移时,生成的secodary id丢失,用户被重定向到登录页面/默认页面。

有关如何确保我的生成的辅助令牌ID不会从复制会话中丢失的任何建议吗?

2 个答案:

答案 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)

来控制