漏洞描述:
经360漏洞检测报告,经常会看到报“Cookie没有HttpOnly标志”的轻微漏洞;
经查阅,httponly属性可以有效的防范XSS利用js获取cookie信息分析或劫持session的攻击,避免暴露敏感信息造成损失;
配置httponly,有两种说法,一种是可以让敏感的cookie配置成在浏览器的document中不可见,从而避免被XSS攻击直接获取;
另一种setcookie函数的最后一个属性,true和false,也可以用1和0来表示,如果是true则表示指明cookie仅在https的安全链接中被设置生效;
解决方案:
那么如何配置httponly,我们可以直接修改php.ini,也可以通过代码配置函数:
①、在php.ini文件中,开启全局cookie的httponly属性;
#vim php.ini
session.cookie_httponly = 1
将其值设为1或者true,表示开启全局cookie的httponly属性,配置完后记得重启下httpd服务哦;
②、在php代码中开启全局cookie的httponly属性;
<?php ini_set("session.cookie_httponly", 1);
// or session_set_cookie_params(0, NULL, NULL, NULL, TRUE);
?>
代码添加到head标签之前,或公用页面靠前的位置;
③、通过setcookie和setawcookie函数的第七个参数来设置httponly的属性;
<?php
setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE);
setrawcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE);
?>
两个函数除了第一个参数cookiename不能为空,其它参数可为空,第七参数默认为false;
当然上面的配置是php5.2或以上版本,如果是php5.1或以下版本,则需要通过header函数来周转一下;
<?php
header("Set-Cookie: hidden=value; httpOnly");
?>
网上还有很多其它web语言的httponly配置方法,有兴趣的道友也可以查阅研究一下。
(好的今天就分享到这里,如果您有高见或好的分享,记得留言哦!)