• 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、页面设置
    除此之外,我们还可以在页面中进行设置,在页面中添加如下代码:

    
    ini_set("session.cookie_httponly", 1); 
    ?>
    
    • 1
    • 2
    • 3

    或者是

    
    session_set_cookie_params(0, NULL, NULL, NULL, TRUE); 
    ?>
    
    • 1
    • 2
    • 3

    也可以设置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);
    
    • 1
    • 2

    注意:这三种设置方法,作用域逐级递减,但是优先级不断升高。有的同学在做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

  • 相关阅读:
    c++枚举
    批量取redis keyvalue和批量删除key
    Python图像处理丨图像的灰度线性变换
    USACO3.4 “破锣摇滚”乐队 Raucous Rockers - DP
    CNN中的参数与计算量
    计组综合练习(期末复习大题部分适用)
    Fleet公测啦!真的轻量?
    Java两个线程使用最基础wait/notify轮流打印数字和字符
    Windows server 2003安装IIS教程怎么安装iis?win2003 iis服务器实验报告
    【Node.js+koa--后端管理系统】用户注册接口设计 | 连接Mysql数据库 | 校验注册权限
  • 原文地址:https://blog.csdn.net/weixin_40228200/article/details/127971946