asp.net cookie的安全性

发布时间:2021-01-08编辑:脚本学堂
asp.net Cookie的安全性

  在使用 cookie 时,必须意识到其固有的安全弱点。这里所说的安全性并不是隐私问题,隐私在更大程度上是某些用户面对的问题:这些用户很关心 cookie 中的信息是如何被使用的。而 cookie 的安全性问题与从客户机获取数据的安全性问题类似。
对于初学者,就应用程序而言,cookie 是用户输入的另一种形式,因而很容易被他人非法获取和利用。由于 cookie 保存在用户自己的计算机上,所以用户至少可以看到您保存在 cookie中的信息。如果用户愿意,还能在浏览器向您发送cookie之前修改cookie。

  所以,不要在 cookie 中保存保密信息 - 用户名、密码、信用卡号等等。不要保存不应该由用户掌握的内容,也不要保存可能被其他窃取 cookie 的人控制的内容。

  同样,要对从 cookie 中得到的任何信息都持怀疑态度。不要认为得到的数据就是您当初设想的信息。处理 cookie 值时采用的安全措施应该与处理 Web 页面中用户键入的数据时采用的安全措施相同。例如,在页面中显示值之前,我会对 cookie 中的内容进行 HTML 编码。这是一种标准的方法,可以在显示之前净化从用户处得到的信息,对 cookie 的处理与此相同。

  另一个需要关心的问题是,cookie 是以纯文本的形式在浏览器和服务器之间传送的,任何可以截取 Web 通信的人都可以读取 cookie。您可以对 cookie 的属性进行设置,使其只能在使用安全套接字层(SSL,又称 https://)的连接上传输。SSL 并不能防止保存在用户计算机上的 Cookie 被他人读取或操作,但它能防止 cookie 在传输途中被他人截取。本文不讨论 SSL,但您必须清楚,您可以对 cookie 进行传输保护。

  面对这些安全问题,如何才能安全地使用 cookie?您可以在 cookie 中保存一些不重要的数据,如用户首选项或其他对应用程序没有重大影响的信息。如果确实需要把某些敏感信息(如用户 ID)保存在 cookie 中,就对这些信息进行加密。一种可行的方法是利用 ASP.NET Forms Authentication 实用程序创建一个身份验证票据,作为 cookie 保存。本文不讨论有关加密的问题,但是,如果您需要在 cookie 中保存敏感信息,就应该试着采取措施来隐藏信息,防止被他人盗用。