Security 用于单点登录的HTTP Referer

Security 用于单点登录的HTTP Referer,security,http-referer,Security,Http Referer,作为合作伙伴项目的一部分,我们需要在我们的应用程序上提供单一登录服务。基本上,人们会通过我们合作伙伴的网站登录,然后他们会被重定向到我们的网站。重定向的请求将在HTTP头字段中包含用户数据 这就是“不确定”的地方。验证此请求是否有效的过程取决于HTTP Referer字段的值。我们的合作伙伴告诉我们检查此字段,以查看源是否合法 现在我知道(我很高兴被证明是错误的)这个字段很容易伪造,而且由于没有其他身份验证方法提供给我们,恶意用户很容易构造错误的HTTP请求并访问我们的web应用程序 首先,我是

作为合作伙伴项目的一部分,我们需要在我们的应用程序上提供单一登录服务。基本上,人们会通过我们合作伙伴的网站登录,然后他们会被重定向到我们的网站。重定向的请求将在HTTP头字段中包含用户数据

这就是“不确定”的地方。验证此请求是否有效的过程取决于HTTP Referer字段的值。我们的合作伙伴告诉我们检查此字段,以查看源是否合法

现在我知道(我很高兴被证明是错误的)这个字段很容易伪造,而且由于没有其他身份验证方法提供给我们,恶意用户很容易构造错误的HTTP请求并访问我们的web应用程序

首先,我是一名程序员,不可否认,我对HTTP的复杂性知之甚少那么我的担心是真的吗?使用SSL(以某种方式)会消除这种顾虑吗?

是的-它是可伪造的

否-客户端可以像发送(假)HTTP请求一样轻松地发送(假)HTTPS请求。唯一的区别是连接是加密的。它没有说明传输的数据

这就是说,这是另一个可以使用的预防措施。然而,不应依赖它来确保安全

我想看一看——这可能有些过分,但它展示了一种安全实现SSO的方法。

是的——它是可伪造的

否-客户端可以像发送(假)HTTP请求一样轻松地发送(假)HTTPS请求。唯一的区别是连接是加密的。它没有说明传输的数据

这就是说,这是另一个可以使用的预防措施。然而,不应依赖它来确保安全


我想看一下——这可能有些过分,但它展示了一种安全实现SSO的方法。

记住,第一条规则是永远不要相信客户端输入。与任何其他客户端输入一样,
Referer
头也很容易伪造。SSL对您没有任何帮助,因为您仍然依赖于客户端输入。另外,请注意,当被https页面引用时,浏览器将
Referer
发送到http页面

另外,考虑到许多有隐私意识的人和代理(个人可能无法控制)可能会从他们的请求中剥离<代码>引用者< /代码>标题,破坏你的计划。


要正确地做到这一点,您需要使用OAuth或OpenID之类的东西,其中协议被设计为安全的。

记住第一条规则是永远不要信任客户端输入。与任何其他客户端输入一样,
Referer
头也很容易伪造。SSL对您没有任何帮助,因为您仍然依赖于客户端输入。另外,请注意,当被https页面引用时,浏览器将
Referer
发送到http页面

另外,考虑到许多有隐私意识的人和代理(个人可能无法控制)可能会从他们的请求中剥离<代码>引用者< /代码>标题,破坏你的计划。


要正确地做到这一点,您需要使用OAuth或OpenID之类的东西,其中协议被设计为安全的。

HTTP Referrer标头不可靠:根据使用的浏览器,它可能不会被发送


HTTP Referer标头不可靠:根据所使用的浏览器,它可能不会被发送


这取决于Web客户端,因为RFC中没有具体的规则。无论哪种方式,都无法保证任何行为。对不起,我的意思是说,
Referer
没有发送https->http,-@cbuckley。,事实上,我正试图同意你的普遍看法。对不起,我的措词不好:-)…看来我们在措词上都有问题+1“决不信任客户端输入”。我只是想确定我没有妄想症。这取决于网络客户端,因为RFC中没有具体的规则。无论哪种方式,都无法保证任何行为。对不起,我的意思是说,
Referer
没有发送https->http,-@cbuckley。,事实上,我正试图同意你的普遍看法。对不起,我的措词不好:-)…看来我们在措词上都有问题+1“决不信任客户端输入”。只是想确定我没有妄想症。