代码之家  ›  专栏  ›  技术社区  ›  David Arno

在我的站点上使用OpenID作为身份验证方法是否存在与我相关的安全风险?

  •  21
  • David Arno  · 技术社区  · 16 年前

    OpenID 在网站上验证用户身份的安全方法?

    如果没有,那么与OpenID相关的安全风险是什么?

    9 回复  |  直到 11 年前
        1
  •  7
  •   community wiki Mecki    16 年前

    实际上,我一直不喜欢OpenID,原因有很多。

    • 我必须信任我提供数据的OpenID提供者。我确实在一定程度上信任某些方面,但是仅仅因为我可能信任堆栈溢出,我不会自动信任任何著名的OpenID提供者。

      1. 如果我的openid密码被泄露,我使用openid的所有站点都会被泄露。通常我会为我使用的每个站点选择不同的密码,但我不能使用OpenID。

      2. 我一点也不喜欢角色概念。即使在发送任何数据之前有人问过我,但一个提供者拥有这些信息,而其他服务可以请求它,这似乎并不正确。好吧,如果我不喜欢的话,我不必使用它,但是这个概念在我看来是有缺陷的。

      3. 如前所述,数据在站点和OpenID提供程序之间发送,然后再次返回。每当交换数据时,它都会受到损害。没有一个系统是100%安全的;甚至没有SSL(HTTPS)。如果数据只从我的一方传回我自己,或者它也从另一方传回另一方,这是一种不同。

      4. 如果一个OpenID提供者被黑客攻击,黑客得到了所有用户的登录数据(毕竟他们是可爱的集中在一个地方!)想想影响吧!

    只是举几个例子。我也没有看到OpenID的巨大优势。对于用户来说

    1. 更快更容易注册和登录
      • 减少因忘记用户名/密码而产生的挫败感
      • 在首选站点保持个人数据的最新状态
      • 最小化密码安全风险

    好吧,让我们分析一下。

    (1)您一天多久注册一页?200次?如果我一周注册两页的话,那就太多了。通常最多2-3个月(实际上栈溢出,或者我的OpenID提供者使用栈溢出,是我注册的最后一页,而这并不是昨天)。所以,当你一个月注册两个网站时,你没有5分钟的时间来填写表格?来吧,别搞笑了。

    (2)如何?因为它在任何地方都使用相同的密码?”这不是未来,这是一个漏洞”,大多数安全专家都会说。或者因为它允许我通过邮件恢复我的密码?实际上,我使用的任何一种方法都允许我这样做。尽管如此,我的火狐还是能很好地记住我的密码,将它们加密存储在磁盘上(使用主密码),并且这个加密的数据库会定期备份,以防丢失。

    (3)好吧,这可能是积极的……但是,到目前为止,我的名字从未改变过,我的电子邮件地址也不会改变,因为它是我使用的一个域,并且转发到了一个真实的地址(所以真实的地址可以改变,我只是更新了转发,一切都像以前一样工作)。我的街道地址?嗯,有些人经常搬家。到目前为止,我这辈子只动过一次。不过,大多数人不需要知道我的街道地址。我认为没有理由让人们知道这些信息的网站,但这要求我填写注册信息,只需得到一个伪造的。整个互联网上几乎没有什么网站知道我的真实地址(实际上只有那些可能需要给我发一封普通邮件或者我可以在哪里订购商品的网站)。

    (4)实际上,我是反过来看的。它将安全风险最大化。它如何将风险降到最低?

        2
  •  10
  •   pyrachi    11 年前

    我同意大卫上面所说的许多观点,所以我在这里提出一些观点只是为了争论。

    对于知识渊博的用户,我认为OpenID是 更多 比许多网站提供的安全身份验证形式。现在让我把那个声明备份一下。首先我的意思是什么 知识渊博的用户 ?我将把此人定义为了解OpenID的弱点并采取措施减轻弱点的人:

    • 如果不希望网站能够有效地跟踪多个角色,则维护多个角色。
    • 在存在24/7访问问题的网站上注册两个或多个OpenID提供者。
    • 总是直接登录到他们的OpenID提供程序。他们从未登录到第三方网站将其重定向到的页面。

    许多网站 do not know how to securely maintain user's passwords . OpenID真正的好处是 获取以选择我的OpenID提供程序,从而选择登录依赖方所需的身份验证级别。例如,我可以选择将身份验证委托给 Verisign Trustbearer -两者都提供了比大多数网站更强的认证技术。我更愿意相信一个专门用我的密码进行安全保护的组织,而不是网上的随机网站。所以我认为,对于已知的用户,openid 可以 比每个网站实现自己的认证系统更安全。

    尽管如此,大多数用户并不知道OpenID固有的风险因素,也不会采取措施来降低风险。

        3
  •  6
  •   Peter Mortensen icecrime    15 年前

    OpenID本质上是不安全的。它的工作原理是你的网站将用户重定向到他们的开放ID提供者网站,然后从该网站接受一个ID。这在两个方面都提供了不安全感。您必须信任返回的ID(因为您无法亲自对用户进行身份验证),并且很容易操作用户的开放ID提供程序的代理,从而可以窃取其用户名和密码。

    OpenID可以用于堆栈溢出之类的事情,如果有人冒充您,那么它并不重要。在个人层面上对内容更为严重的站点使用OpenID是非常危险的。例如,如果您在电子邮件中使用OpenID,那么任何盗用您的ID的人都可以访问您的电子邮件。然后他们可以反过来向您使用的其他站点发送密码提醒请求,以便获取这些站点的密码。在最坏的情况下,您可以使用OpenID作为银行帐户,或者让银行向您的电子邮件帐户发送密码提醒…

    OpenID还有许多其他安全问题。您可以在中找到更多信息 "Privacy on the Internet" .

        4
  •  4
  •   keturn    16 年前

    OpenID确实向身份验证过程中添加了另一方,您必须将其视为受信任的组件。在允许通过电子邮件恢复帐户的任何应用程序方面,这都是非常相似的,但是尽管您的电子邮件以明文形式传输,您可以选择仅通过经过验证的HTTPS连接与OpenID提供者通信。

    复习 Security Considerations 规范的章节。

    有关OpenID中的弱点的详细描述,以及一个优秀的OpenID提供者如何能够提供比传统的容易被仿冒的密码更安全的体验的演示,请参见 this short video by Kim Cameron 从他的 Identity Weblog .

        5
  •  2
  •   McGovernTheory    16 年前

    如果您选择忽略所有不支持HTTPS的OpenID提供程序,则可以使OpenID更加安全。

        6
  •  2
  •   kuettnes    13 年前

    我认为大多数OpenID提供者的主要缺点是他们通过电子邮件提供密码恢复。这会将OpenID安全性降低到我的电子邮件提供商的安全性。如果有人访问我的电子邮件帐户,他可以有效地窃取我的身份(有或没有openid)。

    使用OpenID进行身份验证使窃取YM身份变得简单。只需访问我的电子邮件帐户并重置我的OpenID密码。无需做任何其他事情(代替100个密码重置请求,每个帐户在网上一个)。

    更糟糕的是,如果攻击者更改了我电子邮件帐户的密码,我将很难证明我是OpenID帐户的原始所有者。攻击者可能会将关联的电子邮件帐户更改为他的帐户,这样即使我稍后返回电子邮件帐户,我也无法重置密码。

    它可能足以访问我的OpenID提供者发送的密码恢复电子邮件来窃取我的身份。

    OpenID提供者must提供了禁用电子邮件密码恢复的功能,并提供了一种更安全的方法来恢复丢失的密码。基于邮政地址、护照或银行帐户的东西(我信任的东西不仅仅是电子邮件帐户)。

    只要通过访问一封电子邮件就可以接管OpenID帐户,这只不过是一个额外的单点故障而已。

    参见: http://danielmiessler.com/blog/from-password-reset-mechanisms-to-openid-a-brief-discussion-of-online-password-security 其中“最薄弱的环节:电子邮件密码重置机制”也被提出。

        7
  •  1
  •   Maccurt    12 年前

    这条线旧了,我想加2美分。我认为OpenID有一个似乎没人关心的缺陷。当我通过雅虎认证时,它实际上把我登录到雅虎。它不应该让你登录雅虎,它应该只验证你在雅虎有合适的证书。当你退出我的应用程序时,你仍然登录雅虎。如果您离开共享计算机而另一个人转到雅虎,您将登录。因为当你通过雅虎认证时,他们也会把你登录到他们的服务中。他们应该验证您的身份,而不是登录您。我已经告诉了一些人,甚至用stackoverflow.com演示了这一点(stackoverflow.com有一个糟糕的注销机制,当我点击“注销”时,我希望注销,而不是单击另一个注销按钮)。尝试从雅虎或Gmail注销。关闭所有标签,然后使用yahoo/gmail登录stackoverflow。然后注销堆栈溢出…(确保您点击了两次注销)。现在浏览雅虎或Gmail,你就可以登录了。现在,我得到的最卑鄙的回答是“不要使用共享计算机,你应该注销Yahoo/Gmail等”…每个人都不是一个拥有MIS或计算机科学学位的开发者,我岳母会认为当她退出StackOverflow时,她仍然不会登录雅虎。也许我遗漏了一些parm或者一些可以强制实现我想要的东西,但是文档中肯定没有告诉您OpenID有多棒!!!!

        8
  •  0
  •   Anton Kraievyi    13 年前

    哎哟。myopenid报告了未确认的电子邮件地址,只是做了一个测试。看起来电子邮件信息应该只信任一些手动白名单提供商,如谷歌/雅虎和其他一些提供商。如果有人感兴趣,我会在这里链接代码。

        9
  •  -1
  •   Don    15 年前

    我喜欢Verisign的VIP访问,网站可以利用它,还有一个很好的小iPhone应用程序,可以让你拥有生成的令牌,就像secureid一样。