1

因此,在对 Janrain 的 PHP OpenID 库感到非常沮丧之后,我决定切换到 LightOpenID 库,因为它更简单,并且根据这个答案,只要正确实施 OpenID 提供程序,就不会影响安全性(希望情况如此,因为他们无论如何都持有所有用户的信息:P)。

我剩下的一个问题是 LightOpenID 使用GET协议返回 OpenID 身份验证请求。我知道,为了方便起见,我总是可以在提取相关信息后重新引导用户使用header,但我想知道在传输身份验证信息时需要担心哪些问题,GET而不是通过POST. 例如,他们提供的用户个人信息(如地址、电子邮件等,无论使用 sreg 请求什么)似乎都比经过加密和传递更容易被中间人拦截和提取POST

这是我如何描绘正在传输的数据:

  1. 最终用户输入 OpenID,发送到我的服务器(可以使用任何协议)
  2. 我的服务器要求 OpenID 提供者进行身份验证,用于header重定向到 OpenID 提供者的页面,并让最终用户在必要时允许我的站点。(可以使用任何协议)
  3. OpenID 提供者使用GET. 这包括上面提到的对用户个人信息的关注,这意味着任何中间人只需捕获传递的 URL 即可提取个人信息。据我所知,身份验证信息对他们毫无用处,因为我只能使用它一次来验证登录并生成不同的唯一 ID 以用于跟踪用户的会话。为了增加安全性,我在初次注册时只能询问一次 sreg 信息。
  4. 我的服务器处理信息,最终将最终用户重定向到首先需要身份验证的页面(同样可以使用任何协议,另外我可以选择发送什么信息)

我完全错了吗?如果没有,我该如何缓解这些问题?

ps 我对术语不太熟悉,如果我犯了任何错误以及如何修复它们,请告诉我。

4

1 回答 1

1

成功使用 OpenID 有两个方面适用于这个特定问题:

  1. 身份验证 - 请求是否来自预期的来源并且没有被篡改?

  2. 安全性 - 除了用户和您的服务器之外,还有其他人看到传输中的请求吗?

OpenID 断言由服务器使用共享或私钥签名;在后一种情况下,您的服务器必须再次往返服务器以验证请求。

就安全性而言,使用 GET 或 POST 无关紧要,但使用 SSL 确实如此。两种方法都以类似的方式传输数据,因此任何数据包嗅探器在检索敏感数据时都不会遇到问题。但是,当应用 SSL 时,两种方法都受到同等保护。

于 2012-10-16T03:52:11.090 回答