【安全拾遗】cookie保护伞之Httponly

在网站攻击中,XSS攻击是很常见的一种。

XSS全称Cross Site Scripting,为不与CSS重名,因此简写成XSS。攻击者通过在原始页面注入恶意的javascript脚本语言,达到获取用户token,从而达到伪造用户身份的目的。

为了防范XSS的攻击,浏览器开发商发明了一个属性Httponly,如果给Cookie加上这个属性,js就不能通过document.cookie来获取Cookie,仅仅用作http协议通信。

在PHP中的应用:

setcookie("token", "1234567", NULL, NULL, NULL, NULL, TRUE); //PHP5里的用法,最后一个参数设置为TRUE时开启Httponly支持
header("Set-Cookie: hidden=value; httpOnly"); //PHP4里的用法

做个小实验:

class Httponly {
    public static function test() {
        setcookie('username','simon',null,null,null,null,FALSE);
        setcookie('token','1234567',null,null,null,null,TRUE);
    }
}
Httponly::test();

在Chrome浏览器运行后,按F12调出代码调试器,在Resources里点击Cookie列表,如下图所示,名称为token的Cookie在HTTP栏里有个勾,表示是Httponly属性:

再切换到Console控制台,输入document.cookie回车,发现刚刚我们设置的两个Cookie值,只得到了username的值,token由于是Httponly属性的,得到了浏览器的保护,从而达到保护Cookie的目的。如下图所示:



小结:在写服务端代码时,我们可以把那些安全性要求高的Cookie设置成Httponly,尽可能地做到防范XSS攻击于未然。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值