HTTP Only限制XSS盗取cookie

今天继续给大家介绍渗透测试相关知识,本文主要内容是HTTP Only限制XSS盗取cookie。

免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!

一、HTTP Only原理

在上文XSS平台与cookie获取中我们提到过,XSS攻击的主要手段之一就是盗取目标用户cookie。针对这一情况,我们可以设置HTTP Only来防止Cookie被盗取。
在设置了HTTP Only后,我们就无法通过document对象直接获取到cookie值,这样就避免了使用XSS的手段拿到cookie值,进而使用cookie登录系统了。

二、HTTP Only设置

HTTP Only的设置可以采用三种方式:
1、php.ini文件设置
在PHP配置文件中,将session模块的:session.cookie_httponly属性设置为True或者1。
PHP配置文件设置如下所示:
在这里插入图片描述
2、页面设置
除此之外,我们还可以在页面中进行设置,在页面中添加如下代码:

<?php
ini_set("session.cookie_httponly", 1); 
?>

或者是

<?php
session_set_cookie_params(0, NULL, NULL, NULL, TRUE); 
?>

也可以设置HTTP Only
3、函数设置
最后,我们在发送cookie时,也可以使用setcookie函数,常用的cookie设置函数有两种,该函数的第7个参数如果设置为TRUE,则表示开启HTTP Only,如下所示:

setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE); 
setrawcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE);

注意:这三种设置方法,作用域逐级递减,但是优先级不断升高。有的同学在做HTTP Only实验的时候,无法得到预期的结果,就是因为只更改了PHP配置文件设置或者页面设置,但是由于函数设置要优先于PHP配置文件设置,因此实际上并没有设置HTTP Only。
在这里特别说一下使用DVWA做实验的同学,你必须将安全级别修改为impossible,你的HTTP Only设置才会生效。但是一旦你更改为impossible之后,你很难将XSS代码插入到留言板中(当然,鉴于你肯定能够操作网站源码,因此你可以直接在源码层次上插入)。
在开启HTTP Only后,服务器在向客户端发送cookie时,就会添加HttpOnly字段,如下所示:
在这里插入图片描述
此外,我们也可以在浏览器自带的开发者工具中,查看到该cookie的HTTPOnly字段被打上了勾,如下所示:
在这里插入图片描述

三、HTTP Only效果展示

最后,我们来展示一下HTTP Only的效果。

(一)控制台展示

我们当前的Cookie状态如下所示:
在这里插入图片描述
可以看出,当前有2个cookie是设置了HTTP Only,还有一个cookie是没有设置HTTP Only。我们在浏览器控制台中,尝试使用JavaScript代码查看当前的cookie,结果如下所示:
在这里插入图片描述
可以看出,一个cookie被设置为HTTP Only后,就无法通过JavaScript代码获取到。

(二)XSS平台展示

此外,我们还可以来尝试看设置了HTTP Only属性后,使用XSS平台能否获得Cookie。
我们使用熊海CMS来进行实验。熊海CMS原始代码如下所示:
在这里插入图片描述
如果我们想将cookie设置为HTTP Only属性,就需要把setcookie()函数修改为如下所示:
在这里插入图片描述
这两种不同的设置,决定了cookie是否含有HTTP Only属性,XSS平台获取的信息如下所示:
在这里插入图片描述
从上图中可以看出,在设置了HTTP Only后,XSS平台无法获得用户的Cookie信息了。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远是少年啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值