假设我创建了一个像StackOverFlow这样的网站并决定使用OpenID。什么是阻止我或其他任何人对网络钓鱼进行网络钓鱼?也就是说,你怎么能真正知道任何网站都在使用OpenID而不是假装?你如何保护自己免受这种伤害?
对此进行扩展,假设一个站点确实损害了您的openID凭据,他们是否无法使用openID(全局密码破解)在其他所有站点上使用它?那么你的openID的安全性是否只会与最弱的网站/提供商一样强大?
答案 0 :(得分:8)
您输入的只是ID,没有密码。该ID是公开的,因此“网络钓鱼”不是安全漏洞。有些提供商甚至为所有用户使用相同的ID,例如,Google帐户的ID始终为https://www.google.com/accounts/o8/id
。有关更详细的说明,请参阅Wikipedia article。
答案 1 :(得分:7)
对于对OpenID如何工作知之甚少的用户,您可以创建一些欺骗页面,这些页面看起来像是他们的OpenID所针对的网站(例如,任何处理OpenID的免费电子邮件提供商)。如果他们在填写用户名和密码之前忘记检查他们所在的域名,那么evildomain现在拥有他们的OpenID用户名和密码。
在服务器端,您依靠外部网站进行身份验证。因此,如果提供商XYZ的OpenID身份验证表单中存在一个漏洞,允许密码“箭鱼”在任何帐户上运行,那么任何人都可以在任何接受OpenID的地方模拟该提供商的用户。
allesklar提出了一个很好的观点,当我输入这个时,很好地说明了我的最后一点:如果你混合本地和远程用户,你突然需要两个禁令列表而不是一个;人们为创建批量帐户而设置的“坏”OpenID提供商的第二个禁令列表......或者自动授权给予他们任何帐户名称的帐户。
答案 2 :(得分:6)
当有人在您的网站上输入一个开放ID时,如果该用户可以,则通过询问用户的OpenID所在的网站(以及该网站)来验证用户身份。例如,AOL无法验证Yahoo OpenID。
如果用户尚未在该站点进行身份验证,则身份验证失败,您需要重定向到该站点的登录页面。真正的身份验证仍然需要发生,但它总是发生在该用户的OpenID提供程序中。作为用户,您受到保护,因为您应该只看到您熟悉的登录页面。恶意网站将很难抽取OpenID凭据,因为用户永远不会直接向这些网站提供密码。
用户通过其提供商进行身份验证后(或者如果他们是从一开始就进行身份验证),提供商会将此报告给您的网站。 OpenID的哪些变化是您的网站现在需要信任某些其他网站 - 他们将准确报告其用户的状态。
有人可能会设置一个“恶意”开放ID提供程序,并尝试以这种方式浏览新的ID,但这是在用户和提供程序之间。由于这种认证完全与声誉有关,因此我们的想法是,这样的提供商不会长期保持业务。如果不出意外,网站可以将这些提供商列入黑名单恶意提供程序无法模拟向其他提供程序注册的开放ID。
恶意提供商的另一种可能性是设置一个OpenID服务,该服务只是始终确认传递给它的任何ID进行身份验证(或允许管理员为其用户设置后门)。但是,这只会影响在该提供商处注册的用户。再一次,网站可以将这些提供商列入黑名单,并且由于他们依靠声誉,不会长期保持业务的想法仍然存在。
答案 3 :(得分:2)
OpenID系统非常安全,并因此获得了很多优势。
我看到的主要缺点是,如果您的许多用户的OpenID提供商遭到破坏,这些用户将被锁定在您的网站之外。因此,您应该有一个用户名/密码备份计划,在验证后存储他们的电子邮件地址,以便在发生紧急/灾难时向他们发送密码。
答案 4 :(得分:1)
有趣的故事。我在SO上找到了一个漏洞利用程序,允许我完全改变某人的个人资料。如果Jeff一直在使用电子邮件+密码,我本可以拥有他的帐户,但因为SO使用OpenID,所以无所事事,只能将他的Gavitar改为有趣的东西。
有问题的bug被报告,修复,我还在等待我的黑客徽章。 :P
答案 5 :(得分:1)
让我感到害怕的关键不是在一个网站上拥有自己的帐户,而是每个使用openID的网站!!!