我有一个page A
生成另一个page B's
URL 的查询字符串,其中包含加密的授权信息以访问它page B
。
当用户使用该 URL 访问时page B
,我想将带有授权信息的 cookie 写入用户的本地计算机。
我阅读了MSDN
参考资料,它确实提到可以通过请求和响应生成和读取 cookie,但是有没有办法将 cookie 写入特定位置?
还有一种方法可以在生成 cookie 之前检查用户本地计算机中是否已经存在 cookie。
提前致谢。
无法检查或设置与执行请求的站点不在同一域下的 cookie。
您只能设置或读取与设置 cookie 的站点同源的 cookie。这是 HTML 中内置的安全功能,无法解决。
对于一个易于理解的示例,说明为什么会这样,您希望www.myEvilSiteThatStealsYourData.com
能够读取或写入 cookiewww.theBankingWebsiteYouUse.com
吗?
页面 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 或 google 为您的应用程序提供身份提供程序。