我有一个Web应用程序,我们在其中使用JSF框架。 我一直深入研究Web应用程序的安全部分,因此我希望生成自己的唯一会话ID(使用加密算法并将其分配给用户登录后创建的每个新会话。
任何人都可以指导我如何在会话中设置手动生成的会话ID,并确保每个请求都传输会话ID。
感谢。
答案 0 :(得分:2)
我真的怀疑你会生成比容器生成的会话ID更安全的会话ID,但这是你可以做的,而不使用任何特定于容器的扩展。
创建一个servlet过滤器,拦截每个请求到服务器。
当请求进入时,请检查此请求是否已存在会话(使用getSession(false)
)。如果存在,则从请求中提取特定cookie MY_SESSION_ID,并将其值与存储在会话中的值进行比较。如果它们不匹配,请拒绝该请求。
如果会话不存在,则创建它(使用getSession(true)
),生成超级安全会话ID,将其存储为会话属性,并将cookie MY_SESSION_ID添加到响应中。
这样做的缺点是自动创建会话,即使它不是严格需要的。但是大多数情况下使用组件框架的JSP就是这种情况。
答案 1 :(得分:1)
尝试在JSF应用程序层执行此操作不太可能成功;我会在较低级别的API上执行此任务。我假设一个servlet容器。
我可以想到两种方法: