java - 在 JSF 中生成自己的 session ID

标签 java session jsf jakarta-ee jsf-2

我有一个使用 JSF 框架的 Web 应用程序。 我一直在深入研究 Web 应用程序的安全部分,因此我希望生成自己的唯一 session ID(使用加密算法并将其分配给用户登录后创建的每个新 session 。

任何人都可以指导我如何在 session 中设置手动生成的 session ID,并确保每个请求都传输 session ID。

谢谢。

最佳答案

我真的怀疑您会生成比容器生成的 session ID 更安全的 session ID,但您可以在不使用任何特定于容器的扩展的情况下执行以下操作。

创建一个 servlet 过滤器来拦截对服务器的每个请求。

当请求到来时,检查该请求的 session 是否已存在(使用getSession(false))。如果存在,则从请求中提取您的特定 cookie MY_SESSION_ID,并将其值与存储在 session 中的值进行比较。如果不匹配,则拒绝请求。

如果 session 不存在,则创建它(使用getSession(true)),生成 super 安全 session ID,将其存储为 session 属性,并将 cookie MY_SESSION_ID 添加到回应。

这具有自动创建 session 的缺点,即使不是严格需要的。但在使用组件框架的 JSP 时大多数情况都是这样。

关于java - 在 JSF 中生成自己的 session ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7817431/

相关文章:

javascript - NodeJS 在第二次用户 session 后显示不同的 MySQL 结果

java - Spring MVC3 @SessionAttributes 和@ModelAttribute 会自动从请求中获取值

javascript - 使用 Passportjs 刷新页面后保持身份验证

java - 处理 JSF 中的部分 URL

ajax - selectOneMenu Ajax事件

java - 不生成@XMLRootElement jaxb

java - Jersey 2 使用方法参数生成 WADL 模式

java - 带占位符的简单java递归下降解析库

java - 如何规避 "code too large"错误(Java)?

java - 页面刷新验证