【问题标题】:Managing sessions in node.js, with socket.io & without using cookies在 node.js 中管理会话,使用 socket.io 和不使用 cookie
【发布时间】:2016-06-28 18:13:19
【问题描述】:

我有一个基于 socket.io 的身份验证方法,我知道您可以将客户端 ID 保存在 cookie 中或添加哈希到请求 url。

但我正在寻找一种在 nodejs 中实现会话的方法,它不依赖于在客户端存储数据,这可能吗?

【问题讨论】:

    标签: node.js socket.io


    【解决方案1】:

    如果您不想存储用户的数据,那么您将不得不使用他们已经拥有的现有数据:浏览器版本、IP、用户代理...但这不会很可靠,因为任何网站都会能够看到该信息,因此会话将不安全。
    cookie 不会发生这种情况,因为它们是“私有的”,它们只能在某个域下看到。

    您知道的另一种方法是在您的服务器生成的每个 html 链接/表单中添加一个秘密标签,并使用该密钥来识别登录用户。 这类似于 cookie,但更复杂。您不必在用户的机器上“存储”任何东西...
    此方法存在问题,如果用户共享链接、自定义链接,那么您的密钥将不会是秘密的没有了。

    编辑:我发现了一个类似的问题,您应该阅读Node.JS session without cookies

    【讨论】:

    • 谢谢,使用客户已经拥有的现有数据正是我想要做的。您如何看待使用 IP 地址?这也是不安全的吗?我的意思是客户端可以手动更改他们的 IP,或者客户端之间是否有可能同时重复 IP?
    • IP 是动态的。同一路由器下的两个客户端也将具有相同的 IP。因此,您应该添加更多信息以形成“独特”的组合。请记住,如果您的用户进入另一个站点,该站点也将能够看到他们的 IP 等,并获得您正在使用的相同信息,因此您站点上的会话将不安全......
    猜你喜欢
    • 2014-08-05
    • 2012-02-09
    • 2020-11-03
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 2011-05-18
    • 2014-06-19
    相关资源
    最近更新 更多