因此,在对Janrain的PHP OpenID库感到非常沮丧之后,我决定切换到LightOpenID库,因为它更简单且according to this answer,只要正确实现OpenID提供程序,就不会在安全性上妥协(希望这样是这样的,因为他们无论如何都持有所有用户的信息:P)。
我遇到的另一个问题是LightOpenID使用GET
协议返回OpenID身份验证请求。我理解为方便起见,我总是可以在提取相关信息后使用header
重定向用户,但我想知道通过{传输身份验证信息时我需要担心哪些问题? {1}}而不是GET
。例如,似乎用户提供的个人信息(例如地址,电子邮件等,使用sregs请求的任何内容)可能比中间人更容易拦截和提取,而不是加密和传递{ {1}}。
以下是我对正在传输的数据的描述:
POST
重定向到OpenID提供商的页面,并让最终用户在必要时允许我的网站。 (可以使用任何协议)POST
将身份验证信息发送回我的服务器。这包括上面提到的关于用户个人信息的担忧,这意味着任何中间人都必须抓住传递的URL来提取个人信息。据我所知,身份验证信息对他们没用,因为我只能使用它一次来验证登录并生成用于跟踪用户会话的不同唯一ID。为了增加安全性,我只能在初始注册时询问一次sreg信息。我对此完全错了吗?如果没有,我该如何缓解这些问题?
P.S。我对术语不太熟悉,如果我犯了任何错误以及如何修复它们,请告诉我。
答案 0 :(得分:1)
成功使用OpenID有两个方面适用于这个特定问题:
身份验证 - 请求是否来自预期来源并且未被篡改?
安全性 - 除了用户和服务器之外,还有人在途中看到了请求吗?
OpenID断言由服务器使用共享密钥或私钥进行签名;在后一种情况下,您的服务器必须再次往返服务器以验证请求。
使用GET或POST在安全性方面无关紧要,但使用SSL确实如此。两种方法都以类似的方式传输数据,因此任何数据包嗅探器都可以在检索敏感数据时遇到问题。但是,当应用SSL时,两种方法都受到同等保护。