2013-04-08 36 views
-1

看到使用会话和cookie非常不安全,是否可以安全地使用servlet上下文变量和隐藏表单字段,url重写以实现会话所做的相同事情?是否有可能根本不使用会话,只需依赖servetcontext,隐藏的表单字段等?

但它会同样安全和方便吗?为什么不使用这种方法?

我只是想避免饼干!另外,如果我将用户详细信息保存在servlet上下文变量中,它会不会与cookie相同,但只是在服务器端? 这是Cookie最终被使用的原因,他们是客户端?

回答

0

不,Cookie与Servlet上下文不同。 ServletContext是每个应用程序的单例。不是每个用户。您应该避免使用ServletContext来获取用户特定的信息,因为您还需要关注用户生命周期,例如在他闲置时删除用户信息。

如果你不想使用的Cookie,会话跟踪的替代方案是:

  • URL Rewirting
  • 隐藏的表单域

但是你可以做的帮助下担保饼干以下属性:

  • httponly:在受支持的浏览器上,只有在传输HTTP(或HTTPS)请求时才会使用HttpOnly会话cookie,从而限制其他非HTTP API(如JavaScript)的访问。
  • 安全:安全cookie启用了安全属性,并且只能通过HTTPS使用,确保在从客户端传输到服务器时始终加密cookie。
  • 域名:他们告诉浏览器,cookies应该只发送回给定域的服务器。
  • 路径:他们告诉浏览器,cookie应该只发送回给定路径的服务器。
+0

好吧!但是,我对使用formbeans类感到困惑。一旦我们确认用户输入了正确的密码,我们将所有用户详细信息存储在客户/用户的bean类中。 使用这个bean的函数的范围是什么? 我认为我必须:默认类,私人数据成员,默认功能在它? – Ryan 2013-04-08 17:01:36

+0

这是否意味着我可以使用bean类对象在servlet和其他普通类中为我提供用户的详细信息? 我不明白的是,这个对象的生命何时结束?它的范围是什么? – Ryan 2013-04-08 17:04:31

+0

是的,因为所有这些问题。你应该避免使用ServletContext。你应该使用基于Cookie的会话处理与上面提到的属性。 – 2013-04-08 17:49:21

相关问题