XSS漏洞防御之HttpOnly
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
XSS漏洞防御之HttpOnly的更多相关文章
- Atitit. Xss 漏洞的原理and应用xss木马
Atitit. Xss 漏洞的原理and应用xss木马 1. XSS漏洞1 2. XSS的用途2 2.1. 盗取cookie2 2.2. 刷新流量 刷分3 2.3. DOS 窃取隐私”.“假冒身份”. ...
- XSS漏洞学习笔记
XSS漏洞学习 简介 xss漏洞,英文名为cross site scripting. xss最大的特点就是能注入恶意的代码到用户浏览器的网页上,从而达到劫持用户会话的目的. 说白了就是想尽办法让你加载 ...
- 解决反射型XSS漏洞攻击
对于程序员来说安全防御,无非从两个方面考虑,要么前端要么后台. 一.首先从前端考虑过滤一些非法字符. 前端的主控js中,在<textarea> 输入框标签中,找到点击发送按钮后,追加到聊天 ...
- 一个xss漏洞到内网漫游【送多年心血打造的大礼包啦!】
i春秋作家:jasonx 原文来自:一个xss漏洞到内网漫游[送多年心血打造的大礼包啦!] 前言 渗透过程中,有时候遇某些网站,明明检测到有xss漏洞,但是盲打以后,收到的cookie还是不能登录后台 ...
- 从零学习安全测试,从XSS漏洞攻击和防御开始
WeTest 导读 本篇包含了XSS漏洞攻击及防御详细介绍,包括漏洞基础.XSS基础.编码基础.XSS Payload.XSS攻击防御. 第一部分:漏洞攻防基础知识 XSS属于漏洞攻防,我们要研究 ...
- XSS漏洞之加载远程js文件
这次在对一个系统渗透测试过程中,发现一个XSS漏洞,可弹窗,并且没有httponly 但是在尝试加载远程js文件的时候发现,script标签被过滤掉了,准确的说应该是服务器后端在识别到输入内容有< ...
- XSS漏洞基础
什么是XSS? XSS全程Cross-site scripting,跨站脚本攻击.恶意攻击者往Web页面里插入html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用 ...
- XSS漏洞的渗透利用另类玩法
XSS漏洞的渗透利用另类玩法 2017-08-08 18:20程序设计/微软/手机 作者:色豹 i春秋社区 今天就来讲一下大家都熟悉的 xss漏洞的渗透利用.相信大家对xss已经很熟悉了,但是很多安全 ...
- 浅谈xss漏洞
0x00 xss漏洞简介 XSS漏洞是Web应用程序中最常见的漏洞之一.如果您的站点没有预防XSS漏洞的固定方法, 那么很可能就存在XSS漏洞. 跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Scr ...
随机推荐
- 16flask错误处理
1,A secret key is required to use CSRF 使用CSRF需要一个密钥,也就是说没有设置秘钥
- 正则表达式-获取Json属性值
需求 需要获取json的字符串参数中的某个属性的值,只用json转对象后再获取层级比较多,所以使用简单的正则表达式进行获取 具体实现 public static void main(String[] ...
- binary hacks读数笔记(readelf基本命令)
一.首先对readelf常用的参数进行简单说明: readelf命令是Linux下的分析ELF文件的命令,这个命令在分析ELF文件格式时非常有用,下面以ELF格式可执行文件test为例详细介绍: 1. ...
- 一:JavaWeb
1.javaWeb技术体系 2.HTMl 超文本标记语言 (超文本的意思就是除了可以包含文字之外,还可以包含图片链接音乐视频等...) 2.1 HTML网页的组成 (结构:HTML 表现:CSS 行 ...
- 关于mybatisPlus一些坑,当条件为null时
1.TStaffDepart 属性有值是才匹配条件,会报错,相当于mybatis if 判断 eg:TStaffDepart staffDepart = new TStaffDepart();staf ...
- Kubernetes K8S之Taints污点与Tolerations容忍详解
Kubernetes K8S之Taints污点与Tolerations容忍详解与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master C ...
- CVE-2020-3452 CISCO ASA远程任意文件读取漏洞
0x01 漏洞描述 Cisco官方 发布了 Cisco ASA 软件和 FTD 软件的 Web 接口存在目录遍历导致任意文件读取 的风险通告,该漏洞编号为 CVE-2020-3452. ...
- python计算时间差
前言 之前写代码都是看打印的初始和结束时间然后自己算间隔时间,感觉总是不方便,这不符合python的优雅简洁,于是去寻找简便之道. 方法 time模块计算时间差 import time s_time ...
- iOS沙盒文件目录介绍
1.APP沙盒目录结构简介 首先奉上苹果官方文档: https://developer.apple.com/library/archive/documentation/FileManagement/C ...
- E - Knapsack 2 题解(超大01背包)
题目链接 题目大意 给你一n(n<=100)个物品,物品价值最大为1e3,物品体积最多为1e9,背包最大为1e9 题目思路 如果按照平常的背包来算那么时间复杂度直接O(1e11) 这个你观察就发 ...