缺陷标题 testfire网站部分Cookie没有设置成HttpOnly。
测试平台与浏览器 Windows 7+Chrome或Firefox。
测试步骤
(1)打开testfire网站http://demo.testfire.net。
(2)用ZAP工具查看网站Cookie设置(按F12功能键,进入开发者模式,也能看到Cookie设置)。
期望结果 所有Cookie正确设置。
实际结果 部分Cookie没有设置成HttpOnly,如图1-37所示。
图1-37 部分Cookie没有设置成
HTTP response header中对于Cookie的设置如下。
一个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一个失效时间。