华丽家族股份有限公司:有关Cookie的问题?

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/08 12:23:40
我知道Cookie是一些网站、论坛保存在我电脑的一个文件,里面会我的一些个人信息包括帐号、密码等等来识别我的身份,下次进同一个网站或论坛就不用再输入帐号密码了,一点就进去了,我觉得是挺方便的。就是有这样一个问题:我想问的是这些记录了帐号、密码的Cookie文件在电脑里安全不?一些道德比较低的人会不会轻易就能从里面知道我的一些资料呢?比如帐号、密码等等?

你好.ASKER.

cookie可以让我们摆脱session对性能的影响,但是也存在很多不便。
1、对于同一浏览器,Cookie 的总大小限制在 4096 字节以内,一个网站不超过20个,相同域名下限制为300个,很容易丢失cookie资料。所以尽量减少cookie数量和利用子键。

2、由于cookie容易被伪造,所以保证cookie的真实性是个比较重要的问题。
(1)、不加密cookie,将需要保护的cookie连接作为key来生成一个cookie sessionID,接受的时候判断cookie sessionID
(2)、由于cookie是明文发送和接受的,所以对于重要的数据显然用 sessionID不能满足要求,需要对cookie本身进行加密和解密
---------------------------------------------------------

在使用 Cookie 时,您必须意识到其固有的安全弱点。我所指的安全性并不是隐私问题,正如我在前面的什么是 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 进行传输保护。有关 SSL 的详细信息,请参阅 Secure Sockets Layer: Protect Your E-Commerce Web Site with SSL and Digital Certificates(英文)。

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

在 Mitigating Cross-site Scripting With HTTP-only Cookies(英文)一文中,您可以了解到更多有关 Cookie 及其安全弱点的信息。
----------------------------------------------