gpt4 book ai didi

Node.js TCP 套接字 session

转载 作者:可可西里 更新时间:2023-11-01 02:44:57 24 4
gpt4 key购买 nike

我有多个客户端从应用程序连接到 Node.js TCP 套接字服务器。我想知道一种安全的方式来管理他们的 session 。

用户名+密码通过套接字传递到服务器。服务器确认这是正确的。

我认为我现在需要生成一个唯一的 token 以发送回客户端。

现在如果用户关闭应用程序,然后再次打开它,这个 token 可以传递给服务器,因此服务器将再次确认用户已通过身份验证。

但是,其他人可能会使用此 token 来访问此人的帐户。有办法避免这种情况吗?

是否有更安全的方法(同时仍然保持用户无需再次登录即可进行身份验证的能力)?

您将如何使用相同的登录名处理来自其他设备的连接。他们得到的是不同的 token 还是相同的 token ?

非常感谢。

最佳答案

这归结为您对足够安全的定义。您现在正在做的事情,本质上是 session 跟踪,对于许多通用用途而言,它通常足够安全 - 但是通常会添加一个额外的组件,其中 session 只应被视为对特定 ip 有效。如果用户的 IP 发生变化,您应该让他们重新登录并颁发新的 token 。这样一来,如果一些坏人劫持了他们的 session ID,那对他们没有任何好处。

当然,这仅在您的坏人不能看起来与您的客户来自同一 IP 地址时才有效。如果您担心与您的客户端位于同一 NAT 后面的坏人,因此可能看起来来自同一 IP,那么您将不得不进一步提高安全性,并可能考虑类似于 SSH 的系统使用,但这有点复杂。

至于来自多个设备的连接,这取决于您 - 您可以跟踪某个 token ,并在用户从不同的 IP 登录时交回该 token (同时现在允许两个 IP 登录)使用相同的 token 访问该站点),或者您可以在每次有人进行身份验证时发出一个新 token 。就我个人而言,我倾向于发现发行新代币更容易,更少的跟踪和麻烦……但这取决于您的应用程序以及您想要如何组织事物,我可以为这两种方法设想好的用例。


此外,至于进行密码交换......你至少应该在那里做一些散列,即服务器向客户端发送一些random_string,然后客户端使用一些hash函数(例如 md5sha)计算 hash(random_string + hash(username + password)) 并将其发回。然后,服务器通过检查 hash(random_string + password_hash) 是否等于用户发送的任何内容来验证此匹配。这使得用户的纯文本密码永远不必存储在任何地方 - 在服务器上,您只需在密码更改时存储 password_hash = hash(username+password)

关于Node.js TCP 套接字 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14106296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com