WWW服务依赖于Http协议实现,Http是无状态的协议,所以为了在各个会话之间传递信息,就需要使用Cookie来标记访问者的状态,以便服务器端识别用户信息。

  Cookie分为内存Cookie和硬盘Cookie,内存Cookie储存在浏览器内存中,关闭浏览器则消失。如果是想要利用保存在内存中的Cookie,需要获取到用户Cookie+用户浏览器未关闭。如果是硬盘Cookie,则该Cookie是一段时间有效的(有的时候我们登录网站会出现保持登录状态的选项,即保存在硬盘中),这类Cookie获取到后在其有效期内都是可以进行受害者用户身份登录的,进而实现入侵。

  Cookie由变量名与值组成,其属性里有标准的cookie变量,也有用户自定义的属性。Cookie保存在浏览器的document对象中,对于存在XSS漏洞的网站,入侵者可以插入简单的XSS语句执行任意的JS脚本,以XSS攻击的手段获取网站其余用户的Cookie。

  Cookie是通过http response header种到浏览器的,设置Cookie的语法为:

Set-Cookie:=[;=][;expiress=][;domain=][;path=][;secure][;httponly]

  Cookie各个参数详细内容:

  • Set-Cookie:http响应头,向客户端发送Cookie。

  • Name=value:每个Cookie必须包含的内容。

  • Expires=date:EXpires确定了Cookie的有效终止日期,可选。如果缺省,则Cookie不保存在硬盘中,只保存在浏览器内存中。

  • Domain=domain-name:确定了哪些inernet域中的web服务器可读取浏览器储存的Cookie,缺省为该web服务器域名。

  • Path=path:定义了web服务器哪些路径下的页面可获取服务器发送的Cookie。

  • Secure:在cookie中标记该变量,表明只有为https通信协议时,浏览器才向服务器提交Cookie。

  • Httponly:禁止javascript读取,如果cookie中的一个参数带有httponly,则这个参数将不能被javascript获取;httponly可以防止xss会话劫持攻击。

  想要获取到用户的Cookie,攻击者通常是利用网站的XSS漏洞进行用户Cookie的窃取,跨站脚本简称xss(cross-site scripting),利用方式主要是借助网站本身设计不严谨,导致执行用户提交的恶意js脚本,对网站自身造成危害。xss漏洞是web渗透测试中最常见而又使用最灵活的一个漏洞。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。

  有的网站考虑到这个问题,所以采用浏览器绑定技术,例如将Cookie和浏览器的User-agent进行绑定,一旦发现绑定不匹配则认为Cookie失效,但是这种方法存在很大的弊端,因为当入侵者获取到Cookie的同时也能获取到用户的User-agent;另一种防止XSS获取用户Cookie的方式是将Cookie和Remote-addr相绑定(即与IP绑定),但是这样的弊端是可能会带来极差的用户体验,如家里的ADSL拨号上网就是每次拨号连接更换一个IP地址。

  所以HttpOnly就应运而生了 ️

  HttpOnly最早由微软提出,并在IE6 中实现,至今已经逐渐成为一个标准,各大浏览器都支持此标准。具体含义就是,如果某个Cookie带有HttpOnly属性,那么这一条Cookie将被禁止读取,也就是说,JavaScript读取不到此条Cookie,不过在用户与服务端交互的时候,HttpRequest包中仍然会带上这个Cookie信息,即用户与服务端的正常交互不受影响。

  HttpOnly的设置过程十分简单,而且效果明显。可以看到在上面的Cookie的参数里面存在:

Httponly:禁止javascript读取,如果cookie中的一个参数带有httponly,则这个参数将不能被javascript获取;httponly可以防止xss会话劫持攻击。

  该参数如其名,就是设置HttpOnly的。

  但需要注意的是,所有需要设置Cookie的地方,都要给关键的Cookie添加上HttpOnly,若有遗漏的话就会功亏一篑。

  另外,HttpOnly不是万能的,添加了HttpOnly不等于解决了XSS问题,它有助于缓解XSS攻击,但它并不能解决XSS漏洞的问题,也就是使用了HttpOnly只是在一定程度上抵御XSS盗取Cookie的行为,另外HttpOnly也不能防止入侵者做AJAX提交。严格来说HttpOnly并不是为了对抗XSS,它解决的是XSS后的Cookie劫持问题,但是XSS攻击带来的不仅仅是Cookie劫持问题,还有窃取用户信息,模拟身份登录,操作用户账户等一系列问题。所以除了HttpOnly之外还需要其他的对抗解决方案。

  安全是一个整体,网络安全没有银弹,最好的应对方式是抓住当下,脚踏实地,所有妄想一步解决所有问题的都是耍流氓

  参考链接:

https://juejin.im/post/5bac9e21f265da0afe62ec1b

https://www.biaodianfu.com/http-only-cookie-xss.html

https://blog.lsqy.space/2017/08/25/170825%E6%B5%85%E8%B0%88XSS%E6%BC%8F%E6%B4%9E%E6%94%BB%E5%87%BB%E4%B8%8E%E9%98%B2%E5%BE%A1/

XSS漏洞防御之HttpOnly的更多相关文章

  1. Atitit. Xss 漏洞的原理and应用xss木马

    Atitit. Xss 漏洞的原理and应用xss木马 1. XSS漏洞1 2. XSS的用途2 2.1. 盗取cookie2 2.2. 刷新流量 刷分3 2.3. DOS 窃取隐私”.“假冒身份”. ...

  2. XSS漏洞学习笔记

    XSS漏洞学习 简介 xss漏洞,英文名为cross site scripting. xss最大的特点就是能注入恶意的代码到用户浏览器的网页上,从而达到劫持用户会话的目的. 说白了就是想尽办法让你加载 ...

  3. 解决反射型XSS漏洞攻击

    对于程序员来说安全防御,无非从两个方面考虑,要么前端要么后台. 一.首先从前端考虑过滤一些非法字符. 前端的主控js中,在<textarea> 输入框标签中,找到点击发送按钮后,追加到聊天 ...

  4. 一个xss漏洞到内网漫游【送多年心血打造的大礼包啦!】

    i春秋作家:jasonx 原文来自:一个xss漏洞到内网漫游[送多年心血打造的大礼包啦!] 前言 渗透过程中,有时候遇某些网站,明明检测到有xss漏洞,但是盲打以后,收到的cookie还是不能登录后台 ...

  5. 从零学习安全测试,从XSS漏洞攻击和防御开始

    WeTest 导读 本篇包含了XSS漏洞攻击及防御详细介绍,包括漏洞基础.XSS基础.编码基础.XSS Payload.XSS攻击防御. 第一部分:漏洞攻防基础知识   XSS属于漏洞攻防,我们要研究 ...

  6. XSS漏洞之加载远程js文件

    这次在对一个系统渗透测试过程中,发现一个XSS漏洞,可弹窗,并且没有httponly 但是在尝试加载远程js文件的时候发现,script标签被过滤掉了,准确的说应该是服务器后端在识别到输入内容有< ...

  7. XSS漏洞基础

    什么是XSS? XSS全程Cross-site scripting,跨站脚本攻击.恶意攻击者往Web页面里插入html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用 ...

  8. XSS漏洞的渗透利用另类玩法

    XSS漏洞的渗透利用另类玩法 2017-08-08 18:20程序设计/微软/手机 作者:色豹 i春秋社区 今天就来讲一下大家都熟悉的 xss漏洞的渗透利用.相信大家对xss已经很熟悉了,但是很多安全 ...

  9. 浅谈xss漏洞

    0x00 xss漏洞简介 XSS漏洞是Web应用程序中最常见的漏洞之一.如果您的站点没有预防XSS漏洞的固定方法, 那么很可能就存在XSS漏洞. 跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Scr ...

随机推荐

  1. 内网渗透 day5-msf本地提权(windows)

    msf本地提权 目录 1. 利用uac提权 1 2. 绕过uac认证 2 3. 利用windows本地提权漏洞进行提权 4 1. 利用uac提权 前提与目标机建立会话连接 seach local/as ...

  2. mysql between and 是[a,b]闭区间

    mysql between and 是[a,b]闭区间 mysql between and 是[a,b]闭区间

  3. AI时代,还不了解大数据?

    如果要问最近几年,IT行业哪个技术方向最火?一定属于ABC,即AI + Big Data + Cloud,也就是人工智能.大数据和云计算. 这几年,随着互联网大潮走向低谷,同时传统企业纷纷进行数字化转 ...

  4. linux 信号 ctrl + d z c fg bg 作用

    ctrl+c:前台进程终止 后台进程的终止: 方法一:通过jobs命令查看job号(假设为num),然后执行kill %num   $ kill %1 方法二:通过ps命令查看job的进程号(PID, ...

  5. peterson算法(软件互斥 转)

    1. 背景        首先,看个例子,进程P1,P2共用一个变量COUNT,初始值为0                                                 因为P1,P ...

  6. 年轻人不讲武德来白piao我这个老同志

    朋友们好啊,我是码农小胖哥. 今天有个同学问我在吗,我说什么事? 给我发个截图,我一看!噢,原来是帮忙搞个定时任务,还是动态的. 他说了两种选择,一种是用DelayQueue,一种是用消息队列. 他说 ...

  7. 掉电后osdmap丢失无法启动osd的解决方案

    前言 本篇讲述的是一个比较极端的故障的恢复场景,在整个集群全部服务器突然掉电的时候,osd里面的osdmap可能会出现没刷到磁盘上的情况,这个时候osdmap的最新版本为空或者为没有这个文件 还有一种 ...

  8. 'sortbitwise'是什么意思

    问题 flag sortbitwise 在ceph中是什么意思,在Jewel版本下可以看到多了这个flags [root@lab8106 current]# ceph -s cluster ffe7a ...

  9. ceph使用memdisk做journal

    记得在很久很久以前,ceph当时的版本是有提供使用内存做journal的配置的,当时是使用的tmpfs,但是现在的版本在搜资料的时候,发现关于这个的没怎么找到资料,邮件列表里面有人有提到怎么做,看了下 ...

  10. 用rsync备份一台linux服务器上的数据

    rsync是安装完linux后都会自带的,在机器上运行rsync命令看是否有安装即可 备份到远程服务器 这里介绍的rsync的用途是备份一台linux服务器上的数据到另外一台机器 环境 将需要备份机器 ...