如何在java中维护会话

时间:2013-10-25 06:23:50

标签: java jsp session servlets

我知道以下是在java中维护或会话跟踪但寻找好的方法

  • 网址重写
  • 隐藏的表单字段
  • 饼干
  • 会话对象,如setAttribitute()和session.getAttribute()

如果客户端浏览器阻止接受和存储cookie,则最后两种方式无效。在隐藏表单字段中,我需要在表单内的每个页面中传递隐藏值。所以假设我只是使用{{1然后隐藏的表单字段是不可用的。剩下的是URL重写,我将在URl中传递JsessionID。通过知道sessionID不是未经授权的人能够访问页面,我的问题。 例如登录,注册,发送有3页。登录后用户可以注册和/或发送。如果有人知道sessionID,他/她直接注册/发送页面。如果是,请告诉我如何禁止此

4 个答案:

答案 0 :(得分:2)

从Servlet 3.0(Apache Tomcat 7开始)开始,如果您使用SSL,则可以将应用程序配置为基于SSL会话ID跟踪会话。缺点是一切都必须通过SSL。优点是会话与SSL连接紧密相关。只有与具有正确SSL会话的服务器建立连接的用户才能访问该会话。即使攻击者知道会话ID,他们也无法访问会话。

值得注意的是,这种会话跟踪形式的使用最少,因此可能没有像更常见的cookie和URL重写机制那样经过严格测试。

答案 1 :(得分:1)

请查看概述Best practices for using HTTP sessions

link

包括

  • javax.servlet.http.HttpSession.invalidate()
  • 使用HTTPS

答案 2 :(得分:0)

使用标准解决方案,你不能。

您可以通过添加请求发起方IP地址验证来添加一些安全措施,但这也很容易被愚弄。 (澄清一些在这里意味着非常微小的一点点)

因此,安全路由是不使用URL重写来保护安全应用程序中的会话。

但是,您可以通过将JSessionID保持为单独的加密属性来获得一些安全性,该属性将由位于客户端和应用程序服务器之间的中间件或负载平衡服务器解密。这当然只是一个想法,我没有,幸运的是,我不得不尝试这样的事情: - )

答案 3 :(得分:0)

会话跟踪&身份验证是两个不同的事情,不鼓励他们。

了解您的要求我发现您希望保护用户的会话ID。

  1. Evasdroping:如果有人列出了请求&他可以在中间响应sessionid并使用它。最好的方法是使用SSL。这可以确保没有人在中间听。
  2. 从客户端窃取的Sessionid:通常情况下,浏览器和操作系统应该注意这一点。因此,您的用户与他拥有的系统一样安全。
相关问题