1

我不是密码学家,如果我发现了其他东西,我可能不会尝试自己解决这个问题,那么您如何看待这种使用令牌而不是凭据从另一个站点远程登录网站的方法?

如果有人指出一个经过验证的解决方案,我实际上会很高兴,因为这只是另一个自制软件。

  • 站点 A(我想登录)使用密码,例如 d4ffa3793[...]392258e6a。

  • 站点 B(带有登录按钮的站点)也知道此代码。

  • 当我在站点 B 上单击“登录”时,B 会获取此密钥并使用 PHP 的 crypt 函数使用当前时间的时间戳*对其进行加密。

  • 访问者使用生成的令牌被发送到站点 A,站点 A 执行与站点 B 相同的操作来验证令牌。如果它们匹配,它将登录用户。

*我正在使用当前时间的时间戳,因为某些服务器的时间略有不同,并且在生成和验证令牌之间需要一段时间,

那么,这是怎么回事?你有什么建议?

非常感谢!

4

1 回答 1

0

如果应用程序不是安全敏感的(即,即使有人确实弄清楚如何利用交叉登录机制窃取另一个用户的帐户,您也不会遇到大麻烦),那么我会像您说的那样处理它:通过散列/加密用户名 + 时间戳 + 共享密钥创建令牌,将令牌 + 明文用户名 + 明文时间戳发送到服务器 B(通过重定向 URL 中的 GET 参数),在服务器 B 上验证正确性和新鲜度。

如果它是一个敏感的应用程序,我宁愿研究一些专业的 SSO 解决方案。

如果您选择自制解决方案,您应该注意的一件事是某些哈希(如 MD5)对长度扩展攻击的脆弱性。此外,众所周知,of 的语法crypt很容易出错。

于 2013-01-24T11:15:32.753 回答