OpenID 是一个安全的网站用户身份验证方法吗?
如果不是,使用 OpenID 存在哪些安全风险?
我同意大卫所提出的许多观点,因此在这里只是为了辩论而提出一些观点。
对于有知识的用户,我认为OpenID是比许多网站提供的认证方式更安全的。现在让我来解释一下我的说法。首先,什么是“有知识的用户”?我将定义这样的人为那些意识到OpenID的弱点并采取措施来减轻这些弱点的人:
许多网站不知道如何安全地维护用户密码。 OpenID的真正好处在于,我可以选择我的OpenID提供者和登录依赖方所需的认证级别。例如,我可以选择委托认证给Verisign或Trustbearer - 它们都提供比网络上的大多数网站更强的认证技术。我更愿意相信专门从事安全领域的组织来保护我的密码,而不是在网络上随机的某个网站。因此,我认为对于有知识的用户而言,OpenID 可以比每个网站实现其自己的认证系统更加安全。
尽管如此,大多数用户并不了解OpenID固有的风险因素,并且不会采取措施来减轻这些风险。
其实,我一直不喜欢OpenID,因为有许多原因。
我必须信任提供我数据的OpenID提供者。我确实对某些网站抱有一定程度的信任,但只是因为我信任Stack Overflow,并不意味着我自动信任任何著名的OpenID提供者。
如果我的OpenID密码被盗,那么我所使用OpenID登录的所有网站都会受到影响。通常情况下,我会为每个网站选择不同的密码,但在使用OpenID时我不能这样做。
我根本不喜欢Persona的概念。即使在发送任何数据之前我都会被询问,但只是一个提供者拥有这些信息,其他服务可以请求它,这似乎并不合理。好吧,如果我不喜欢可以不用,但这个概念对我来说有缺陷。
正如已经提到的,数据在网站和OpenID提供者之间来回传输。无论何时交换数据,都可能遭受攻击。没有任何系统是100%安全的,甚至包括SSL(HTTPS)。如果数据只在我和一个网站之间来回传输,与同时还要在两个网站之间来回传输是有区别的。
如果OpenID提供者被黑客攻击,并且黑客获取了所有用户的登录数据(毕竟,这些数据集中在一个地方),那么影响将会非常严重!
以上仅是其中一部分原因。我也看不出使用OpenID的巨大优势。对于用户而言,他们说:
好吧,让我们分析一下。
(1) 你每天会注册一个网页多少次?200次?如果我每周只注册2个页面,那就已经很多了。通常情况下,最多每月注册2-3个(实际上,Stack Overflow或我的OpenID提供者来使用Stack Overflow是我最后注册的一个网页,而且这不是昨天)。所以当你每月只注册2个网站时,你没有5分钟填写一个表格吗?别开玩笑了。
(2) 怎么做到的?因为它在所有地方使用相同的密码?“这不是未来,这是一个漏洞” ,大多数安全专家会这样说。或者因为它允许我通过邮件恢复密码?嗯,实际上,我使用的几乎所有网站都允许我这样做。尽管如此,我的Firefox非常好地记住了我的密码,将它们加密存储在磁盘上(使用主密码),并且这个加密数据库定期备份,以防丢失。
(3) 嗯,这可能是一件好事情……然而,我的名字到目前为止从未改变过,我的电子邮件地址也不会改变,因为它是我使用的域之一,并转发到真实地址(所以真实地址可以更改,我只需更新转发即可,一切都像以前一样运作)。我的街道地址呢?嗯,有些人经常搬家。我迄今为止只搬过一次家。然而,大多数网站并不需要知道我的街道地址。对于那些要求我填写这些信息以注册但我看不出有必要让别人知道这些信息的网站,我就会提供虚假信息。在整个互联网上,只有极少数网站知道我的真实地址(实际上只有那些可能需要给我寄信或者我可能会在那里订购商品的网站)。OpenID本质上是不安全的。它的工作原理是您的网站将用户重定向到其OpenID提供商网站,然后接受来自该网站的ID。这在两个方向上都存在不安全性。您必须信任返回的ID(因为您无法自己验证用户),而且很容易操作代理到用户的OpenID提供商,从而允许您窃取他们的用户名和密码。
对于像Stack Overflow这样的东西,OpenID就很好,因为如果有人冒充你并不重要。但对于内容更加严肃的网站来说,使用OpenID非常危险。例如,如果您将OpenID用于电子邮件,则任何窃取您的ID的人都可以访问您的电子邮件。然后,他们可以向您使用的其他网站发送密码提示请求,以获取这些网站的密码。在最坏的情况下,您可能会将OpenID用于银行账户,或者有一家银行会向您的电子邮件帐户发送密码提示...
OpenID还存在许多其他安全问题。您可以在"互联网隐私"中找到更多信息。
如果您选择忽略不支持 HTTPS 的所有 OpenID 提供程序,可以使 OpenID 更安全。
哎呀,MyOpenID 报告未经确认的电子邮件地址,我刚刚测试了一下。看起来只有像 Google/Yahoo 和其他几个手动白名单提供商才应该信任电子邮件信息。如果有人感兴趣,我会在这里链接代码。
我喜欢Verisign的VIP访问,网站可以利用它,而且有一个不错的iPhone应用程序,可以让你生成令牌以便进入,就像secureID一样。