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. JavaScript一元运算符、二元运算符和三元运算符

    在JavaScript中,运算符可以根据其实际操作数的个数进行分类. JavaScript中的大多数运算符是一个二元运算符(binary operator),将两个表达式合并成为一个稍复杂的表达式.譬 ...

  2. select模型(二 改进服务端)

    一. int select(int fds,fd_set *readfds,fd_set * writefds,fd_set * exceptfds,struct timeval * timeout) ...

  3. linux修改网卡的mac地址

    linux在安装一些软件的时候可能会用到修改主机的mac地址的问题,在网卡配置文件 /etc/network/interface 中添加mac地址的方式我在修改重启机器后没有生效,所以采用其他方式 在 ...

  4. Python_面试题汇总【正在整理中...】

    1.十大算法 阶乘 冒泡 1 #使用递归实现阶乘 2 3 def f(n): 4 if n ==1: 5 return 1 6 else: 7 return n*(f(n-1)) 使用递归实现阶乘 1 ...

  5. 这 5 个开源的能挣钱的 SpringBoot 项目,真TMD香!

    不得不佩服 Spring Boot 的生态如此强大,今天我给大家推荐几款 Gitee 上优秀的后台开源版本的管理系统,小伙伴们再也不用从头到尾撸一个项目了,简直就是接私活,挣钱的利器啊. SmartA ...

  6. deepin V20 简易入门指南

    deepin V20 入坑指南 系统安装 入坑第一步自然是先安装系统了,deepin的安装方式很简单只需要一个U盘即可,在官网下载好安装镜像文件,使用官方的启动盘制作工具,开机时选择从U盘启动即可,安 ...

  7. Linux 文本处理批量查找与替换

    # 搜索含有特定字符串在某个目录并打印出文件名grep -rl "www.baidu.com" /data* -r, --recursive like --directories= ...

  8. Metasploit渗透使用攻略

    msf关于tomcat口令暴力猜解模块 use auxiliary/scanner/http/tomcat_mgr_login show options set rhosts 192.168.2.14 ...

  9. 图解HTTP简单笔记【上】

    第一章 了解WEB及网络基础(省略了TCP/IP的知识点) 1.1.使用HTTP协议访问web  当我们在主机的浏览器的地址输入URL之后 请求将回发送至目标服务器 目标服务器在接受到响应请求时将会响 ...

  10. 云服务器-Ubuntu更新系统版本-更新Linux内核-服务器安全配置优化-防反弹shell

    购入了一台阿里云的ESC服务器,以前都用CentOS感觉Yum不怎么方便,这次选的Ubuntu16.04.7 搭好服务之后做安全检查,发现Ubuntu16.04版本漏洞众多:虽然也没有涉及到16.04 ...