Cookies 是一种提供Web 应用程序中存储用户特定信息的方法,能够让网站服务器把少量数据存储到客户端的硬盘或内存,或是从客户端的硬盘读取数据的技术。
Cookies 是一小段文本信息,伴随着用户请求和页面在Web 服务器和浏览器之间传递,Cookies包含每次用户访问站点时Web 应用程序都可以读取的信息。例如,如果在用户请求站点中的页面时,应用程序发送给该用户的不仅仅是一个页面,还有一个包含日期和时间的 Cookie,用户的浏览器在获得页面的同时还获得了该Cookie,并将它存储在用户硬盘上的某个文件夹中。之后,如果用户再次请求该站点中的页面,当该用户输入 URL 时,浏览器便会在本地硬盘上查找与该URL关联的Cookie。如果该Cookie 存在,浏览器便将该Cookie 与页面请求一起发送到浏览的站点。应用程序便可以确定该用户上次访问站点的日期和时间,可以使用这些信息向用户显示一条消息,也可以检查到期日期。
从本质上讲,Cookies 可以看作是访问者的身份证。但Cookies 不能作为代码执行,也不会传送病毒,且为访问者所专有,并只能由提供它的服务器来读取。保存的信息片断以“名/值对”(name-value pairs)的形式存储,一个“名/值对”仅仅是一条命名的数据。一个网站只能取得其放在访问者的计算机中的信息,无法从其他的Cookies 文件中取得信息,也无法得到访问者的计算机上的其他任何东西。
Cookies 的测试包含以下几个方面:
>>Cookies 的作用域是否正确合理
>>Cookies 的安全性
>> Cookies 的过期时间是否正确
>>Cookies 的变量名与值是否正确
>>Cookies 是否必要,是否缺少
默认情况下,一个站点的全部Cookies 都存储在客户端上,当客户端向服务器发送请求时,Cookies 会随请求一起被发送到服务器端。Cookies 一般通过以下两种方式来设置作用域,测试时需要注意:
将Cookies 的范围限制在服务器上的某个文件夹,允许将Cookies 限制到网站上的某个应用程序。
将范围设置为某个域,允许指定域中的一些子域访问Cookies。
将Cookies 限制到服务器上的某个文件夹的代码如下(与Visual Basic 和C#为例):
(1)Visual Basic 语言:
Dim appCookie As New HttpCookie("AppCookie")
appCookie.Value = "written " & DateTime.Now.ToString()
appCookie.Expires = DateTime.Now.AddDays(1)
appCookie.Path = "/Application1"
Response.Cookies.Add(appCookie)
(2)C#语言:
HttpCookie appCookie = new HttpCookie("AppCookie");
appCookie.Value = "written " + DateTime.Now.ToString();
appCookie.Expires = DateTime.Now.AddDays(1);
appCookie.Path = "/Application1";
Response.Cookies.Add(appCookie);
默认情况下,Cookie 与特定域关联,例如,当用户向亚马逊网站http://www.amazon.cn请求任何页面时,Cookie 就会被发送到服务器,那么该Cookie 的作用域则为特定域(这可能不包括带有特定路径值的Cookie)。如果站点具有子域(例如http://sales.contoso.com),则可以将Cookie 与特定的子域关联。
(1)Visual Basic 语言:
Response.Cookies("domain").Value = DateTime.Now.ToString()
Response.Cookies("domain").Expires = DateTime.Now.AddDays(1)
Response.Cookies("domain").Domain = "http://sales.contoso.com"
(2)C#语言:
Response.Cookies["domain"].Value = DateTime.Now.ToString();
Response.Cookies["domain"].Expires = DateTime.Now.AddDays(1);
Response.Cookies["domain"].Domain = "http://sales.contoso.com";
需要设计不同的Cookie 来测试其他作用域是否正确。
(1)Cookies 的安全性
Cookie 其实是一种存储用户信息的方式,因此很容易被人非法获取和利用,因此Cookie 同样也存在安全性问题。因此Cookie 中最好不要存储一些敏感的信息,如用户名、密码、信用卡号等。需要时应该对Cookie 中的一些字段进行加密处理,避免Cookie 以明文形式在浏览器与服务器之间发送,测试时需要确定Cookie 中一些重要的信息是否被加密处理。
(2)Cookies 过期时间是否正确
在开发过程中会对Cookie 的过期日期和时间进行设置,测试需要注意Cookie 的过期时间是否正确。当用户访问编写Cookie 的网站时,浏览器会将过期的Cookie 删除,如果是设置为永不过期的Cookie,可以将日期设置为从现在起50 年。如果未设置Cookie 的有效期,仍然会创建Cookie文件,但不会将该文件存储在用户硬盘上,只是将Cookie 作为用户会话信息的一部分进行维护。当用户关闭浏览器时,Cookie 会被丢弃。
(3)Cookies 的变量名和值是否正确
以JavaScript 为例,Cookie 的定义格式为“变量1=值1;变量2=值2;变量3=值3;”。下面是一
个Cookie 的实例代码:
email="bush@usa.com";
firstname="arivn";
lastname="test";
expireDate="Thursday,01-Jan-2050 12:00:00 GMT";
document.cookie="email="+email+";expires="+expireDate;
document.cookie="firstname="+firstname+";expires="+expireDate;
document.cookie="lastname="+lastname+";expires="+expireDate;
测试时需要测试Cookie 文件中每个变量名和值是否对应,并且需要保证其正确性。
(4)Cookies 是否必要,是否缺少
测试Cookie 是否必要和是否缺少有两个方面的测试内容:一是生成的Cookie 文件是否与创建的一致,不能多也不能少;二是对于不必要的Cookie 可以删除。