18

假设我创建了一个类似 StackOverFlow 的网站并决定使用 OpenID。有什么办法可以阻止我或其他任何人对 ID 进行网络钓鱼?也就是说,你怎么能真正知道任何网站都在使用 OpenID 而不是假装呢?你如何保护自己免受这种伤害?

对此进行扩展,假设一个站点确实泄露了您的 openID 凭据,他们不能在使用 openID(全局密码破解)的每个其他站点上使用它吗?那么,您的 openID 的安全性难道不会与最弱的网站/提供商一样强大吗?

4

6 回答 6

8

你输入的只是ID,没有密码。ID 是公开的,因此“网络钓鱼”不是安全漏洞。一些提供商甚至为所有用户使用相同的 ID,例如 google 帐户的 ID 始终为https://www.google.com/accounts/o8/id. 有关更详细的说明,请参阅Wikipedia 文章。

于 2008-11-25T20:13:26.483 回答
7

对于对 OpenID 的工作原理知之甚少的用户,您可以创建一些看起来像他们的 OpenID 所针对的网站的恶搞页面(例如,任何处理 OpenID 的免费电子邮件提供商)。如果他们在填写用户名和密码之前忘记检查他们所在的域,那么 evildomain 现在就有了他们的 OpenID 用户名和密码。

在服务器端,您依赖外部站点进行身份验证。因此,如果提供者 XYZ 的 OpenID 身份验证表单中存在漏洞,允许密码“swordfish”在任何帐户上工作,那么任何人都可以在任何接受 OpenID 的地方冒充来自该提供者的用户。

allesklar 在我输入此内容时提出了一个很好的观点,这很好地与我的最后一点相吻合:如果您将本地和远程用户混合在一起,您突然需要两个禁止列表而不是一个;由人们设置的“坏” OpenID 提供者的第二个禁止列表,以创建批量帐户……或自动授权给他们的任何帐户名称的那些。

于 2008-11-25T20:53:00.663 回答
6

当有人在您的站点上输入一个开放 ID 时,您通过询问用户的 OpenID 所在的站点(并且仅是该站点)来验证该用户是否正常。例如,AOL 无法验证 Yahoo OpenID。

如果用户尚未在该站点进行身份验证,则身份验证失败,您需要重定向到该站点的登录页面。仍然需要进行真正的身份验证,但始终使用该用户的 OpenID 提供程序进行。作为用户,您受到保护,因为您应该只看到您熟悉的登录页面。恶意站点很难窃取 OpenID 凭据,因为用户从不直接向这些站点提供密码。

一旦用户通过其提供商的身份验证(或者如果他们从一开始就),提供商将向您的网站报告此情况。OpenID 的变化在于您的站点现在需要信任某些其他站点——它们会准确地报告其用户的状态。

有人可以设置一个“恶意的”开放 id 提供者,并尝试以这种方式掠夺新的 id,但这是在用户和提供者之间。由于这种身份验证完全与声誉有关,因此这样的提供商不会长期经营。如果不出意外,网站可以将这些提供商列入黑名单。恶意提供者将无法冒充在其他提供者处注册的开放 ID。

恶意提供者的另一种可能性是设置一个 OpenID 服务,该服务总是简单地确认传递给它的任何 id 以进行身份​​验证(或允许管理员为其用户设置后门)。但是,这只会影响在该提供商处注册的用户。同样,网站可以将这些提供商列入黑名单,并且由于他们依靠声誉,这种不会长期存在的想法仍然存在。

于 2008-11-25T20:21:50.913 回答
2

OpenID 系统非常安全,并因此获得了广泛的支持。

我看到的主要缺点是,如果您的许多用户的 OpenID 提供商出现故障,这些用户将被锁定在您的站点之外。因此,您应该有一个用户名/密码备份计划,在验证后存储他们的电子邮件地址,以便在紧急情况/灾难时向他们发送密码。

于 2008-11-25T20:49:53.540 回答
1

好笑的故事。我在 SO 上发现了一个漏洞,可以让我完全更改某人的个人资料。如果 Jeff 一直使用电子邮件+密码,我本可以拥有他的帐户,但是因为 SO 使用 OpenID,所以除了将他的 Gavitar 更改为有趣的东西之外别无他法。

有问题的错误已报告,已修复,我仍在等待我的黑客徽章。:P

于 2008-11-25T20:57:43.650 回答
1

这里让我害怕的关键不是在一个网站上拥有他的帐户,而是每个使用 openID 的网站!

于 2008-11-25T21:00:04.113 回答