【问题标题】:Securely Transferring Users Between Web Sites在网站之间安全地转移用户
【发布时间】:2010-12-24 12:22:04
【问题描述】:
这是场景:
- 您有两个独立的网站,它们存在于不同的环境中(即不同的数据库、不同的 Web 服务器/域)
- 您可以完全控制两个站点的代码,但从上述观点来看,它们不能直接与对方的数据库通信
- 您必须安全地将用户从站点 A 转移到站点 B
实现这一点的最佳方法是什么?简单地通过查询字符串在站点之间发送用户标识符是不安全的,即使是加密的,因为其他人可以获得 URL。似乎标准解决方案是将用户标识符与网站 A 创建的另一个临时密钥一起传递,并且网站 B 知道。如果是这种情况,使用临时密钥安全设置系统的正确方法是什么?
谢谢!
【问题讨论】:
标签:
security
multiple-domains
【解决方案1】:
我正在做这样的事情。我现在能想到的最好的事情是传递用户 ID 的 HASH,或者如果这让您担心,可以传递一些其他用户数据的哈希。
如果你想要临时密钥(我也可能会这样做),那么如何在 A 上设置一个 Web 服务,B 可以调用它来根据临时密钥获取用户 ID。这样,它是一个完全独立的调用,并且可以得到保护。
【解决方案2】:
看看“Pass-through Authentication,"”,它是一个允许用户身份从一个系统传递到另一个系统的概念。
此外,您可能想要尝试的另一个想法是创建一个不会公开用户信息并将其传递的安全令牌。但是,这需要两个系统都具有相似的数据来验证令牌。正如另一个答案所建议的那样,哈希是创建有关敏感信息的非描述性位的非常好的用途。
【解决方案4】:
您需要在站点 A 和站点 B 之间传递信息,但您不需要让用户成为该信息的渠道。
站点 B 可以具有允许站点 A 为用户创建会话的 Web 服务。在此设计中,交互将如下所示:
- 用户点击站点 A 上的按钮
- 站点 A 调用站点 B 上的 Web 服务,将临时登录 URL 传递回站点 A
- 站点 A 将用户重定向到站点 B 上的临时 URL