【问题标题】:What is the concept of saving session id in cookie?在 cookie 中保存会话 id 的概念是什么?
【发布时间】:2016-07-10 14:44:15
【问题描述】:

我正在为企业开发一个安全网站。我希望它完全不受所有已知漏洞的影响。我遇到了创建安全 cookie 并启用 HTTPOnly 但在该示例中,他们使用 cookie 值作为会话 ID。我不明白。不使用这种方式会不会是一种威胁?

【问题讨论】:

  • 你在问我们?为什么你认为这会是一种威胁?
  • 是的,我需要知道在 cookie 中发送会话 ID 的动机,因为会话 ID 可以从会话本身获取。
  • 如果您没有会话 ID(例如在 cookie 中),您认为如何从中检索会话和 ID?神奇吗?
  • 会话由tomcat服务器管理,通过请求参数可以获取会话?
  • 正如 Thomas 下面所说,在请求参数中传递 sessionid 是个坏主意。此外,如果您在 cookie 中有 sessionid,则不会将其作为参数传递 too

标签: java cookies web-applications session-cookies


【解决方案1】:

您需要将会话 ID 发送到客户端并返回到服务器,以便将来自该客户端的请求与会话匹配。

AFAIK 只有两种方法可以传递会话 id:作为 cookie 或作为参数(在大多数情况下,这将是支持获取请求的 url 参数)。通过参数发送会话 id 是一个漏洞,因为攻击者可以提供带有预先制作的会话 id(会话固定)的链接,而对 cookie 执行相同操作至少很难(如果不是不可能的话)。

通过 url 参数发送会话 ID 不仅是一个安全问题。假设有人复制 url 并将其发送给某人(“嘿,看看这个”)或将其发布到网络上的某个地方。只要会话存在,访问该链接的每个人都将使用相同的会话并相互迭代。诚然,有一些方法可以识别用户,而不管会话(ip、ma​​c 地址等)如何,但这些措施通常不可行或施加其他限制(例如,您将如何处理漫游的移动用户?)。

【讨论】:

  • 非常感谢您的精彩解释。然后按照你的说法,我应该使用 java servlet 中的 cookie 传递的会话 id 创建一个会话,并且应该使用创建的会话 id 进行进一步操作。
  • @user2695448 如果您需要访问应用程序中的会话,那么是的,您将在 cookie 中传递会话 id 并根据 cookie 值将每个请求与该会话相关联 - 这通常应该已经是由Tomcat等标准Web服务器处理。如果您不需要会话,即所有内容都是只读的,或者您的应用程序将整个视图状态/会话传递给客户端并返回,那么您不需要这样做。
猜你喜欢
  • 2010-09-19
  • 2012-09-30
  • 2016-11-30
  • 2011-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-14
相关资源
最近更新 更多