如何理解cookie的httponly属性? httponly如何避免js读取到cookie?
发布于 作者:苏南大叔 来源:程序如此灵动~
苏南大叔的cookie系列文章,到这里开始讲到cookie的安全问题。如果你的网站是https的话,那么强烈建议你启用cookie的secure属性。但是无论你的网站是不是https,但是都强烈建议你启用cookie的httponly。

具体的启用方法,每个服务器语言都不同,php启用httponly的方式,可以参见苏南大叔的相关文章。
httponly简述
httponly这个词非常的高大上,叱诧江湖很多年。只要是网络安全界,提起xss取cookie,就必然提起对应的解决方案httponly。但是,httponly真的是啥效果,你知道嘛?这可就未必了。
撕去httponly的高大上的面纱,一句话进行描述的话,就是:httponly的cookie,网页代码中的js无法获得相关信息。xss的必需语句,document.cookie是无法获得httponly的cookie的。但是,服务器端是可以照常获得的。
实践一下代码
下面的php代码中,苏南大叔设置了2个cookie,一个是httponly的,另外一个不是。
<?php
header("Set-Cookie:only_no=这个没有设置only;",FALSE);
header("Set-Cookie:only=这个设置了only;httponly;",FALSE);
?>
<a href="javascript:alert(document.cookie)">document.cookie</a>实验结果如下:

我们可以看到,JavaScript使用document.cookie,只拿到了一个cookie值,就是没有使用only属性的这个。
总结
本篇内容不是讲xss的,只是讲述httponly的。在具体的实践中,xss是需要构造非常复杂的办法,然后最终执行document.cookie的。如果以后有机会,苏南大叔可以给大家讲讲xss实战。不过,这个有些黑客的范畴了。额,洗白一下先,是网络安全的范畴。
更多有关cookie的精彩内容,请大家关注如下链接: