我想完全消除HttpSession - 我可以在web.xml中这样做吗?我确信有容器特定的方法可以做到这一点(当我进行谷歌搜索时,搜索结果会出现这种情况).
PS这是个坏主意吗?在我真正需要它之前,我更喜欢完全禁用它们.
我继承了一个非常古老的JSP应用程序(JDK 1.3.1_15),并试图插入会话固定漏洞.
我在使用身份验证后成功地使当前会话无效,HttpSession.invalidate()但是在创建新会话时,会重新使用旧会话ID.
<%
// login.jsp
if (authenticated) {
request.getSession().invalidate();
// create new session and store data
HttpSession session = request.getSession();
session.putValue(...);
// etc
response.sendRedirect("logged-in.jsp");
return;
}
%>
Run Code Online (Sandbox Code Playgroud)
我可以在HTTP监视器中看到新的会话分配,它只是再次使用相同的号码.
-- Initial request response --
HTTP/1.1 200 OK
Set-Cookie: JSESSIONID=6a303082951311647336934;path=/
-- login.jsp request response --
HTTP/1.1 302 Moved Temporarily
Location: http://example.com/logged-in.jsp
Set-Cookie: JSESSIONID=6a303082951311647336934;path=/
Run Code Online (Sandbox Code Playgroud)
在我使用session.invalidate()第二个Set-Cookie响应头之前根本不存在.
有没有人对如何生成新的会话ID有任何建议?我对JRUN4不是很熟悉,但是通过配置文档进行拖网并没有发现任何问题.
我已经使用 Google Datastore 在 servlet 中创建了一个登录页面,它工作正常。但有时它会在 URL 中显示 JSESSIONID。
如何阻止 JSESSIONID 通过 URL 发送?为什么它通过 URL 而不是请求消息传递?