当前位置: 首页 > 面试题库 >

httpservletrequest-创建新会话/更改会话ID

洪梓
2023-03-14
问题内容

我正在维护Java Web应用程序。

通过登录代码,它可以通过HttpServletRequest的getSession()方法从HttpServletRequest中获取一个HttpSession。(它在会话中使用一些值进行认证)

但是,我担心会话固定攻击,因此在使用初始会话后,我想开始一个新会话或更改会话ID。这可能吗?


问题答案:

Servlet 3.0 API不允许您更改现有会话上的会话ID。通常,为了防止会话固定,您将只想创建一个新的并使旧的无效。

您可以像这样使会话无效

request.getSession(false).invalidate();

然后创建一个新的会话

getSession(true)(也getSession()应该工作)

显然,如果会话中有要保留的数据,则需要将其从第一个会话复制到第二个会话。

请注意,对于会话固定保护,通常认为只对身份验证html" target="_blank">请求执行此操作即可。但是更高级别的安全性涉及为每个请求都抛弃旧会话并进行新会话。



 类似资料:
  • org.openqa.selenium.SessionNotCreatedException:无法创建新会话。(原始错误:命令失败:C:\Windows\system32\cmd.exe/s/C“C:\Program Files(x86)\Android\Android sdk\platform tools\adb.exe”-s 69c7aa170104安装“C:\Program Files(x8

  • 当会话仅是一个未来的且还没有被建立的会话时被认为是“新”的。因为 HTTP是一种基于请求-响应的协议,直到客户端“加入”到 HTTP 会话之前它都被认为是新的。当会话跟踪信息返回到服务器指示会话已经建立时客户端加入到会话。直到客户端加入到会话,否则不能假定下一个来自客户端的请求被识别为同一会话。 如果以下之一是 true,会话被认为是“新”的: 客户端还不知道会话 客户端选择不加入会话。 这些条件

  • 这是因为我在一个搜索字段上有一个失败的Behat测试-这个字段是通过javascript添加的,所以我假设Selenium(与我的设置)有问题。 我发现,如果我访问http://localhost:4444/wd/hub并单击“create Session”,选择任何浏览器(android、iphone、firefox、chrome、internet explorer、opera),我将得到错误消

  • 有人能帮我吗?我是Android系统的新手,我正尝试在AVD中打开应用程序,安装了应用程序,但我得到错误“一个新的会话不能被创建。(原始错误:命令失败:)”,“杀死”:false,“代码”:1,“信号”:null,“origvalue”:“命令失败:”},“sessionid”:null} 谢谢你事先的帮助 尝试只提供Capabilities.SetCapability(“AppActivity”

  • 我试图使用Spring Cloud的Zuul、Eureka和我自己的服务实现微服务架构。我有多个具有UI和服务的服务,每个服务都可以使用x509安全性对用户进行身份验证。现在我想把祖尔放在那些服务机构的前面。由于Zuul无法将客户端证书转发到后端,我认为下一个最好的方法是在Zuul的前门对用户进行身份验证,然后使用Spring会话在后端服务中复制他们的身份验证状态。我遵循了Dave Syer的教程

  • 我找了很多解决办法。谢了。