本文最后更新于 2018年07月29日 12:57 可能会因为没有更新而失效。如已失效或需要修正,请留言!

今天看了《白帽子讲web安全》一书,顺便记录一下,HttpOnly的设置

httponly的设置值为 TRUE 时,使得Javascript无法获取到该值,有效地防御XSS打管理员的 cookie

这里以本博客作为测试对象,实现了一下。

找到网站 /include/lib/loginauth.php 文件,如下修改:
[XSS防御]HttpOnly之四两拨千斤-ChaBug安全

这里解释一下:在PHP>5.2版本中支持HttpOnly设置,可以直接在php.ini文件中设置,个人不推荐这种方式,推荐如上图所述在设置cookie时设置。

setcookie() 这个函数现支持7个参数,第七个参数是设置 httponly 的属性,第六个是是否开启 https 传输。

这样设置以后,就能有效地防止XSS获取用户的重要cookie信息

效果如下:

[XSS防御]HttpOnly之四两拨千斤-ChaBug安全

使用alert(document.cookie)在控制台弹窗一下,发现并没有我们的登录信息cookie键值对:

[XSS防御]HttpOnly之四两拨千斤-ChaBug安全

注意:httponly只是阻止了js获取httponly值为true所对应的cookie键值队,并不能拦截XSS,想要拦截XSS除了浏览器的filter以外,更多的是程序本身做好参数的过滤。

喜欢这篇文章的话就点一点喜欢吧!