gpt4 book ai didi

security - 将登录 token 从一个网站安全地传递到共享数据库中的另一个网站

转载 作者:行者123 更新时间:2023-12-02 03:11:16 24 4
gpt4 key购买 nike

我在不同的服务器上有两个网站,我需要允许从一个站点到另一个站点的单点登录。两个网站都可以访问相同的数据库。用户已经在网站A上经过身份验证和信任,但是我希望他们单击​​链接并自动登录并重定向到网站B。我研究了SAML和其他SSO选项,但是因为两个网站都可以访问相同的内容数据库,我想知道是否可以使用简单的 token 来允许SSO?

设置为:
www.websiteA.com > databaseAwww.websiteB.com > databaseA
我在考虑以下方面:

  • www.websiteA.com/sso.php
  • 在与该用户关联的databaseA中创建随机 token 记录,比如说ABCD1234
  • 重定向到www.websiteB.com/login.php?token=ABCD1234
  • 在databaseA中检查该 token ,并将相关用户登录到


  • 这是在这两个网站之间执行单点登录的安全方法吗?如果URL变量是通过HTTPS执行的,并且 token 仅在使用后才被销毁,它是否安全?

    最佳答案

    我认为在许多情况下可以接受在站点A上生成 token 并将其作为身份验证方法传递给站点B的一般想法。它从根本上没有缺陷,但是正如您提到的,最佳实践是以标准方式(例如OAuth2(用于身份的OpenID Connect))进行的。

    但是,一如既往,细节很重要。

    token 需要安全地生成(基于加密安全的随机生成器),需要具有足够的熵(〜足够长的时间),需要安全地进行传输,并安全地存储在客户端上(如果有的话,但始终是至少存储在内存中),接收方的验证不应受到竞争条件的影响(攻击者和受害者同时发送 token ,服务器上的两个线程都检查 token 是否有效,都找到了 token ,然后都使它失效,但这没关系, token 对他们两个都有效),等等。

    我认为,使您提出的解决方案直接脆弱的唯一真正的弱点是在URL中传递 token 。 HTTPS确实可以防止窃听攻击,但是url参数可能会登录到中间代理(例如,公司用户甚至可能不知道此类代理,并且这些代理多次终止SSL,利用客户端上受信任的公司证书),可能会在客户端浏览器中被记住,可能会登录到目标服务器上,等等。如果 token 仅在首次使用之前才​​有效,这在某种程度上减轻了风险,但是最好将其发送到请求正文(POST)中而不是url参数。

    关于security - 将登录 token 从一个网站安全地传递到共享数据库中的另一个网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39900182/

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