我们当前的项目有一家合作公司,希望重定向到我们的网站并继续在我们网站上的旅程。他们将在重定向的同时发送登录用户的数据。
确保重定向来自特定域并且数据安全发送的最佳方法是什么。
我想在查询字符串中使用HTTP referer标头和加密数据?
以及查询字符串中的加密数据?
只有在客户端或原始服务器已经向您发送了解密所需的信息的情况下才能安全工作,并且如果客户端知道如何解密,则客户端可能会篡改数据和请求标头,从而允许它们访问第二个站点,尽管不是来自第一个站点。(是的,HTTP引用可以伪造。通常,在客户端上做的任何事情都是值得信赖的。(
实现这一点的安全方法是,当发送方站点确信经过身份验证的用户可以被授权重定向到您的站点时,让发送方站点向您的站点后端发送服务器端请求,当然是加密的。您的后端可以将信息或令牌保存在数据库中,然后告诉原始站点请求已成功。然后,原始站点可以与客户端通信,客户端可以重定向到您的站点。当客户端到达您的站点时,在数据库中查找(加密的(令牌,以确保在过去几秒钟内发出了这样的请求,并且该令牌以前没有使用过。
设置所有的跨站点通信确实需要一些努力,但一旦完成,您可以确保只有允许的用户才会获得原始站点的授权。
在两个应用程序之间集成SSO(单一登录(的理想方法是使用SAML、OAuth等企业集成技术。
如果这不可能,他们应该向用户发送一个唯一的令牌(GUID:UUID(
然后,您的代码调用合作伙伴应用程序服务器上的URL来验证令牌并获取用户身份。
这将确保用户的身份不会在重定向请求中被篡改。
用户的身份信息不应作为HTTP(s(请求的一部分传递,因为它可以通过使用代理工具(如burp或fiddler等(进行篡改/更改。