因此,在对 Janrain 的 PHP OpenID 库感到非常沮丧之后,我决定切换到 LightOpenID 库,因为它更简单,并且根据这个答案,只要正确实施 OpenID 提供程序,就不会影响安全性(希望情况如此,因为他们无论如何都持有所有用户的信息:P)。
我剩下的一个问题是 LightOpenID 使用GET
协议返回 OpenID 身份验证请求。我知道,为了方便起见,我总是可以在提取相关信息后重新引导用户使用header
,但我想知道在传输身份验证信息时需要担心哪些问题,GET
而不是通过POST
. 例如,他们提供的用户个人信息(如地址、电子邮件等,无论使用 sreg 请求什么)似乎都比经过加密和传递更容易被中间人拦截和提取POST
。
这是我如何描绘正在传输的数据:
- 最终用户输入 OpenID,发送到我的服务器(可以使用任何协议)
- 我的服务器要求 OpenID 提供者进行身份验证,用于
header
重定向到 OpenID 提供者的页面,并让最终用户在必要时允许我的站点。(可以使用任何协议) - OpenID 提供者使用
GET
. 这包括上面提到的对用户个人信息的关注,这意味着任何中间人只需捕获传递的 URL 即可提取个人信息。据我所知,身份验证信息对他们毫无用处,因为我只能使用它一次来验证登录并生成不同的唯一 ID 以用于跟踪用户的会话。为了增加安全性,我在初次注册时只能询问一次 sreg 信息。 - 我的服务器处理信息,最终将最终用户重定向到首先需要身份验证的页面(同样可以使用任何协议,另外我可以选择发送什么信息)
我完全错了吗?如果没有,我该如何缓解这些问题?
ps 我对术语不太熟悉,如果我犯了任何错误以及如何修复它们,请告诉我。