![OpenID 是不是很容易被黑客入侵,还是我忽略了什么?](https://linux22.com/image/509534/OpenID%20%E6%98%AF%E4%B8%8D%E6%98%AF%E5%BE%88%E5%AE%B9%E6%98%93%E8%A2%AB%E9%BB%91%E5%AE%A2%E5%85%A5%E4%BE%B5%EF%BC%8C%E8%BF%98%E6%98%AF%E6%88%91%E5%BF%BD%E7%95%A5%E4%BA%86%E4%BB%80%E4%B9%88%EF%BC%9F.png)
对于那些允许用户指定 OpenID 提供商 (OP) 的依赖方 (RP),在我看来,任何知道或猜测你的 OpenID 的人都可能
- 输入自己的OP地址。
- 让它验证他们是否拥有你的 OpenID。
- 在 RP 上访问您的帐户。
RP“可以”采取措施防止这种情况,即仅允许原始 OP 验证 OpenID,但是……
- 你怎么知道他们这么做?
- 如果不更改你的 OpenID,你就永远无法更改你的 OP。
答案1
OpenID 是那些你必须信任终端的系统之一。如果 RP 不值得信任,那么这种关联中毒完全有可能。如果 RP 确实值得信赖,那么这种攻击就困难得多。避免受到这种攻击的“解决方法”是将本地安全原则(在 ServerFault 上,这将是您的用户名在后端数据库中的表示)与外部 OpenID 端点(OpenID URL,ServerFault 允许您关联多个这些端点)组合在一起。
您仍可以通过 RP 的 DNS 中毒攻击进行攻击,例如,*.livejournal.com 被重定向到您为攻击专门制作的 OP。但这是 DNS 中毒攻击,而不是 OpenID 本身的错误。OpenID 只是容易受到 DNS 中毒攻击。
答案2
我认为您混淆了 OpenID 和用户安全的其他部分。您的 OP 是身份验证机制,而不是您的帐户。在 ServerFault 上,您有一个帐户。该帐户本身没有身份验证手段;除非您将其指向一个或多个 OP。
当您尝试以 SF 身份登录您的帐户时,系统会要求您的 OP 处理身份验证。只有该 OP(或多个 OP,无论您如何设置)才能为您的 SF 帐户进行身份验证。
典型的登录系统由三个部分组成(称为三重“A”或简称为“AAA”):
- 会计 - 跟踪您的姓名和网站特定信息(如帖子、消息等)
- 身份验证——跟踪如何确保确实是你(通常是密码)
- 授权——跟踪你的权限(对各种事物的读取或写入访问权限)
您可以阅读更多关于AAA 系统在维基百科上。
答案3
David,你的假设是错误的。OpenID 的工作方式如下:1) 你想登录到网站 relingingparty.com 2) 你向 relingingparty.com 提供你的 OpenID,例如 david.com 3) relingparty.com 检查 david.com(嘿,这是一个 URL)是否存在所谓的 OpenID 端点,该端点可以在 david.com 上找到,但通过委托方式也可以在其他地方找到,例如 yahoo.com 或 google.com。我们将其称为 davidsopenidprovider.com 4) 你现在被重定向到 davidsopenidprovider.com。davidsopenidprovider.com 的工作是对你进行身份验证。你必须登录 davidsopenidprovider.com。此登录的工作方式由 davidsopenidprovider.com 决定。它可以是用户名/密码,也可以是信息卡、浏览器证书、指纹、智能卡、带外机制(如呼叫验证)……davidsopenidprovider.com 负责处理身份验证。然后它会询问您是否确实要登录到 relingparty.com。5) 如果您成功登录到 davidsopenidprovider.com,您将被重定向回 relingparty.com 并自动登录。6) davidsopenidprovider.com 仅向 relingparty.com 保证您就是您声称的那个人。它不会发送任何密码。
因此,您假设“作为消费者,当我在 any-site.com 上创建帐户时,我对开发人员/站点管理员的智力一无所知。”对于 OpenID 而言是错误的。如果存在弱点,那就是提供商,而不是 any-site.com。这就是现在传统用户名/密码登录的问题。您必须信任每个提供此类登录的网站,而不仅仅是一个,即您的 OpenID 提供商。
我希望这有助于理解 OpenID。
答案4
您的 openID 是您的提供商。pwnguin.net
是我的 openID。这无需猜测,这只是一个已知事实。保护我的 openID 的是 pwnguin.net 上运行的软件,只有当相关访问者拥有身份验证 cookie 时,该软件才会做出肯定答复。
我不会说 openID 是安全的;可能会发生各种跨站点脚本攻击,或者一些我倾向于忽略或误解的平凡细节。