【问题标题】:Why is express-session connect.sid value is visible on client?为什么 express-session connect.sid 值在客户端可见?
【发布时间】:2020-07-21 16:11:54
【问题描述】:

我正在玩 express-session 并阅读他们的文档,似乎在客户端,名称为 connect.sid 的 cookie 存储了会话 ID。我对安全性的理解有限,但如果会话 ID 如此容易访问,这不是一个漏洞吗?

【问题讨论】:

  • express-session 中间件将会话数据存储在服务器上;它仅将会话 ID 保存在 cookie 本身中,而不是会话数据。根据 express 的文档,它不是为在生产环境中使用而设计的。
  • @Bibek 但是使用会话 ID,恶意用户可以劫持会话,从而也可以访问会话数据?我认为文档说如果您使用另一种存储方法,那么它可以用于生产。但我仍然无法隐藏 connect.sid cookie...

标签: node.js express security session express-session


【解决方案1】:

Cookie 对目标客户端是私有的。这对于 socket.io 或 google 登录没有什么不同。如果服务器想要保护它们,那么您通过 https 运行连接,并且它是端到端加密的,唯一可以访问这些 cookie 的是客户端本身。这就是浏览器如何登录和识别以前经过身份验证的客户端。

socket.io sessionID 也不需要是秘密。它不授权任何东西。它只是将客户端标识为与以前相同的客户端。如果应用程序希望该客户端经过身份验证和安全,则需要以不同的方式进行。没有任何与 socket.io cookie 相关的身份验证。

如果您使用的是快速会话并且希望它是安全的,那么您需要使用端到端 https。这可以保护传输中的会话 cookie。是的,如果您的客户端遭到入侵并且有人窃取了会话 cookie 并在它过期之前使用它,他们可能会劫持会话。但是,这就是您使用 https 的原因,因此无法从传输中间的某个位置获取会话 cookie。因此,需要保护的是客户端本身。而且,这与每个使用身份验证的网站的要求相同。这是 web 的架构,对于 socket.io 或 express-session 来说并不是什么新鲜事。

那么,如果您的计算机以某种方式被黑客入侵,并且黑客获得了对客户端浏览器的访问权限,进而获得了 cookie 和会话 ID,会发生什么情况?这样他们就不会在传输过程中劫持会话

首先,您可以快速过期 Cookie(例如在不活动的 5 分钟内)。您会看到银行网站这样做。

然后,如果计算机本身已受到损害,您将面临更大的问题。攻击者可以植入键盘记录程序或其他间谍软件,并可以窃取您的实际登录凭据,不仅用于您的网站,还用于电子邮件和其他类似的东西。

除了用户名和密码登录之外,还有更高级别的安全性。例如,您可能需要插入 USB 端口或要求您从设备输入代码(不断变化)的物理硬件。我曾为需要这种设备以便从公司 LAN 外部登录公司网络的公司工作。这是所谓的“双因素”身份验证的一种形式。

如果您查看像银行这样的网站,他们通常会对登录计算机进行某种检测,如果它看起来像一台不熟悉的计算机(缺少其他 cookie、不同的 IP 地址、不同的用户代理、不同的屏幕分辨率等)。 ..) 那么他们需要额外的登录步骤,例如向您的手机发送一个代码,您必须输入该代码才能登录。或者,他们要求您在让您进入之前回答其他个人问题。他们也可能会通知该帐户持有人使用新计算机登录。如果不是您,请更改/重新保护您的帐户凭据。

您是否建议将我的整个网站从 HTTP 重新路由到 HTTPS 来解决这个问题?

是的。任何对安全感兴趣的网站都应要求通过 https 访问。

网络上有很多关于这个主题的文章。您可以从这里阅读文章开始:https://www.google.com/search?q=best+practices+for+securing+login

【讨论】:

  • 那么,如果您的计算机以某种方式被黑客入侵,并且黑客获得了对客户端浏览器的访问权限,进而获得了 cookie 和会话 ID,会发生什么?那么他们不会在传输过程中劫持会话吗?我主要使用会话进行身份验证。另外,感谢关​​于使用 HTTPS 的建议!您是否建议将我的整个网站从 HTTP 重新路由到 HTTPS 来解决这个问题?您对保护客户本身的最佳做法有什么建议吗?
  • @Jackson - 我在回答您最近的问题时添加了更多内容。
  • 所以大多数情况下,我只需要担心使用 HTTPS 来确保会话 ID 在传输过程中不会被劫持吗?因为这是劫持会话的主要方式?
  • @Jackson - 是的会话劫持。当凭据被盗时,还有其他一些事情(其中一些在上面描述)可以提高安全性。
猜你喜欢
  • 2017-06-20
  • 1970-01-01
  • 2017-07-17
  • 2021-02-04
  • 2019-11-05
  • 2022-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多