在c#中将cookie写入客户端本地机器

时间:2013-08-01 14:09:40

标签: c# cookies

我有page A生成另一个page B's网址,其中包含一个查询字符串,其中包含用于访问该page B的加密授权信息。

当用户使用该URL访问page B时,我想将带有授权信息的cookie写入用户的本地计算机。

我阅读了MSDN引用,它确实提到了可以通过请求和响应生成和读取cookie,但有没有办法将cookie写入特定位置?

在生成Cookie之前,我是否还可以检查用户本地计算机中是否已存在Cookie。

提前致谢。

2 个答案:

答案 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或谷歌为您的应用程序做身份提供程序。