如何理解cookie的httponly属性? httponly如何避免js读取到cookie?
发布于 作者:苏南大叔 来源:程序如此灵动~![](/usr/themes/panda/assets/img/icon/ok.png)
苏南大叔的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
的精彩内容,请大家关注如下链接:
![](/usr/themes/panda/assets/img/icon/end.gif)
![](/usr/themes/panda/assets/img/icon/ok.png)
![](/usr/themes/panda/assets/img/icon/stop.png)