我有page A
生成另一个page B's
网址,其中包含一个查询字符串,其中包含用于访问该page B
的加密授权信息。
当用户使用该URL访问page B
时,我想将带有授权信息的cookie写入用户的本地计算机。
我阅读了MSDN
引用,它确实提到了可以通过请求和响应生成和读取cookie,但有没有办法将cookie写入特定位置?
在生成Cookie之前,我是否还可以检查用户本地计算机中是否已存在Cookie。
提前致谢。
答案 0 :(得分:4)
无法检查或设置与执行请求的网站不在同一域下的Cookie。
您只能设置或读取Same Origin的Cookie作为设置Cookie的网站。这是HTML内置的安全功能,无法解决。
为了便于理解这种方式的原因,您希望www.myEvilSiteThatStealsYourData.com
能够读取或写入www.theBankingWebsiteYouUse.com
的Cookie吗?
答案 1 :(得分:0)
页面A中的URL应包含加密的UserID和Timestamp对称加密,(如/ B?SecurityToken = blabla),页面B必须解密安全令牌,验证时间戳不太旧(1分钟应该足够)并创建基于解密安全令牌的cookie。
更强大的方案:A(身份提供商)在没有任何令牌的情况下将用户发送给B(服务提供商); B检查用户是否在B域中具有认证cookie,如果用户没有,则B将用户重定向到A的单一登录处理程序,如果用户在A域中具有认证cookie,则A向B发送加密响应,否则提供有关用户的信息(如UserID) A要求用户提供凭据,如果它们正确,则A向B发送加密响应.B解密UserID并在B域中创建身份验证cookie。还有协议(SAML,OAuth) - 以类似的方式,您可以使用Facebook或谷歌为您的应用程序做身份提供程序。