今天看了《白帽子讲web安全》一书,顺便记录一下,HttpOnly的设置
httponly的设置值为 TRUE
时,使得Javascript无法获取到该值,有效地防御了XSS打管理员的 cookie
这里以本博客作为测试对象,实现了一下。
找到网站 /include/lib/loginauth.php
文件,如下修改:
这里解释一下:在PHP>5.2版本中支持HttpOnly设置,可以直接在php.ini文件中设置,个人不推荐这种方式,推荐如上图所述在设置cookie时设置。
setcookie()
这个函数现支持7个参数,第七个参数是设置 httponly
的属性,第六个是是否开启 https
传输。
这样设置以后,就能有效地防止XSS获取用户的重要cookie信息
。
效果如下:
使用alert(document.cookie)
在控制台弹窗一下,发现并没有我们的登录信息cookie键值对:
注意:httponly
只是阻止了js
获取httponly
值为true
所对应的cookie
键值队,并不能拦截XSS,想要拦截XSS除了浏览器的filter以外,更多的是程序本身做好参数的过滤。