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所示。

图1-37 部分Cookie没有设置成HttpOnly

专家点评


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一个失效时间。