![软件测试实验实训指南](https://wfqqreader-1252317822.image.myqcloud.com/cover/533/26793533/b_26793533.jpg)
1.19 实验#19:testfire网站Cookie没设置成HttpOnly
缺陷标题 testfire网站部分Cookie没有设置成HttpOnly。
测试平台与浏览器 Windows 7+Chrome或Firefox。
测试步骤
(1)打开testfire网站http://demo.testfire.net。
(2)用ZAP工具查看网站Cookie设置(按F12功能键,进入开发者模式,也能看到Cookie设置)。
期望结果 所有Cookie正确设置。
实际结果 部分Cookie没有设置成HttpOnly,如图1-37所示。
![](https://epubservercos.yuewen.com/3770CF/15253385004105606/epubprivate/OEBPS/Images/Figure-P55_5772.jpg?sign=1739388714-Lyx8AwsKXtR8QLRcTpoOA28N6vGqrywq-0-a5e553c1a1f593eccf2a4847396a4d33)
图1-37 部分Cookie没有设置成HttpOnly
专家点评
HTTP response header中对于Cookie的设置如下。
![](https://epubservercos.yuewen.com/3770CF/15253385004105606/epubprivate/OEBPS/Images/Figure-P56_15796.jpg?sign=1739388714-6qYMb6T4SUx7cGPBMBovjp0gl6YzY89t-0-6b4fb53f556fbb853bae63cae5d82706)
一个Cookie包含以下信息。
(1)Cookie名称。Cookie名称必须使用只能用在URL中的字符,一般为字母及数字,不能包含特殊字符,如有特殊字符则需要转码。例如,JavaScript操作Cookie时可以使用escape()对名称进行转码。
(2)Cookie值。Cookie值与Cookie名称类似,可以进行转码和加密。
(3)Expires,即过期日期,这是一个GMT格式的时间,当过了这个日期之后,浏览器会将这个Cookie删除;如果不设置Expires,则Cookie在浏览器关闭后消失。
(4)Path,这是一个路径,在这个路径下面的页面才可以访问该Cookie,一般设为/,以表示同一个站点的所有页面都可以访问这个Cookie。
(5)Domain。即子域,指定在该子域下才可以访问Cookie。例如,要让Cookie在a.test.com下可以访问,但在b.test.com下不能访问,则将domain设置成a.test.com。
(6)Secure。即安全性,指定Cookie是否只能通过HTTPS协议访问。一般的Cookie使用HTTP协议即可访问;如果设置了Secure(没有值),则只有使用HTTPS协议才可以访问。
(7)HttpOnly。如果在Cookie中设置了HttpOnly属性,那么通过程序(JavaScript脚本、Applet等)将无法读取到Cookie信息。
一般为加固Cookie,都需要设置HttpOnly与Secure属性,并且给Cookie一个失效时间。