首页 > 代码库 > HttpOnly cookie与跨站点追踪

HttpOnly cookie与跨站点追踪

攻击XSS漏洞的一种有效载荷,就是使用嵌入式JavaScript访问document.cookie属性,截获受害者的会话令牌。HttpOnly cookie是某些浏览器所支持的一种防御机制,许多应用程序使用它防止这种攻击有效载荷执行。

当应用程序设定一个cookie时,它可能在Set-Cookie消息头中标记为HttpOnly:

Set-Cookie: SessId=12d1a1f856ef224ab424c2454208ff; HttpOnly;

当一个cookie以这种方式标记时,支持它的浏览器将阻止客户端JavaScript直接访问该 cookie。虽然浏览器仍然会在请求的HTTP消息头中提交这个cookie,但它不会出现在 document.cookie返回的字符串中。因此,使用HttpOnly cookie有助于阻止攻击者使用XSS漏洞实施会话劫持攻击。

注解 HttpOnly cookie不会影响其他可使用XSS漏洞传送的攻击有效载荷。例如,它不会影响前面在MySpace蠕虫中使用的诱使用户执行任意操作的攻击。并不是所 有浏览器都支持HttpOnly cookie,这表示不能总是依赖它们阻止攻击。而且,稍后我们会讲到,即使使用HttpOnly cookie,攻击者有时仍然能实施会话劫持攻击。

====================================================

在PHP中,cookie的HttpOnly有两种设置方式。

方法一:

header("Set-Cookie:tmp=100;HttpOnly");

方法二:

setcookie("tmp", 100, NULL, NULL, NULL, NULL, TRUE);