XSS攻击防范
前端安全系列之XSS攻击防范
1、使用textContent
2、使用HTML转义
- 把JS中的标签转成字符
3、对于链接跳转 禁止含有'javascript:'开头的字符
4、标签属性中含有恶意执行代码 javascript
5、如果用户输入的文本进行过滤很容易照成注入漏洞
6、什么是XSS攻击
- Cross-Site Scripting(跨站脚本攻击) 为和CSS区分所以叫XSS攻击
7、XSS攻击的本质
- 而已代码未经过滤,混入正常代码中,浏览器无法分辨,导致恶意代码被执行;
8、在处理输入时,以下内容都不可信
- 来自用户的 UGC 信息
- 来自第三方的链接
- URL 参数
- POST 参数
- Referer (可能来自不可信的来源)
- Cookie (可能来自其他子域注入)
9、XSS分类
- 根据攻击来源可分为三种: 存储型、反射型、DOM型;
- 存储型:
- 攻击者将恶意代码提交到目标网站的数据库中, 用户打开目标网站时,网站服务端将恶意代码从数据库取出,拼接在 HTML 中返回给浏览器;
- 用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行, 恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作
- 常见操作带有用户保存数据的网站功能,如论坛发帖、商品评论、用户私信等
- 反射型:
- 攻击者构造出特殊的 URL,其中包含恶意代码,用户打开带有恶意代码的 URL 时,网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器。
- 反射型 XSS 跟存储型 XSS 的区别是:存储型 XSS 的恶意代码存在数据库里,反射型 XSS 的恶意代码存在 URL 里
- 反射型 XSS 漏洞常见于通过 URL 传递参数的功能,如网站搜索、跳转等。
- DOM 型:
- 攻击者构造出特殊的 URL,其中包含恶意代码,
用户打开带有恶意代码的 URL,用户浏览器接收到响应后解析执行,前端 JavaScript 取出 URL 中的恶意代码并执行。 - DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞。
- 攻击者构造出特殊的 URL,其中包含恶意代码,
- 存储型:
10、XSS攻击预防
- 包含两大要素
- 攻击者提交恶意代码。
- 浏览器执行恶意代码。
- 两种方式
- 纯前端渲染(当前主流形式)
- 浏览器先加载一个静态 HTML,此 HTML 中不包含任何跟业务相关的数据,然后浏览器执行 HTML 中的 JavaScript, JavaScript 通过 Ajax 加载业务数据,调用 DOM API 更新到页面上。
- 但纯前端渲染还需注意避免 DOM 型 XSS 漏洞;
- 使用.innerHTML、.outerHTML、document.write()要小心;应尽量使用textContent;如果用 Vue/React 技术栈,并且不使用 v-html、dangerouslySetInnerHTML 功能,就在前端 render 阶段避免 innerHTML、outerHTML 的 XSS 隐患。
- 转义 HTML
- Java 工程里,常用的转义库为 org.owasp.encoder;
- 纯前端渲染(当前主流形式)
后记
- DOM 中的内联事件监听器,如 location、onclick、onerror、onload、onmouseover 等,标签的 href 属性,JavaScript 的 eval()、setTimeout()、setInterval() 等,都能把字符串作为代码运行。如果不可信的数据拼接到字符串中传递给这些 API,很容易产生安全隐患,请务必避免。
XSS攻击防范的更多相关文章
- 来自内部的XSS攻击的防范
来自内部的XSS攻击的防范 引入:前面我们分2篇文章分别探讨了来自外部的XSS攻击和来自内部的XSS攻击,现在我们来专门探讨如何防范来自内部的XSS攻击. 实践:其实从 http://www.2cto ...
- XSS研究2-来自内部的XSS攻击的防范
引入: 前面我们分2篇文章分别探讨了来自外部的XSS攻击和来自内部的XSS攻击,现在我们来专门探讨如何防范来自内部的XSS攻击. 实践: http://www.cnblogs.com/crazy ...
- 网络XSS攻击和CSRF攻击原理及防范
网络XSS攻击和CSRF攻击原理及防范 原文地址:http://www.freebuf.com/articles/web/39234.html 随着Web2.0.社交网络.微博等等一系列新型的互联网产 ...
- XSS攻击原理、示例和防范措施
XSS攻击 XSS(Cross-Site Scripting,跨站脚本)攻击历史悠久,是危害范围非常广的攻击方式. Cross-Site Stripting的缩写本应该是CSS,但是为了避免和Casc ...
- XSS 防范XSS 攻击的措施
XssSniper--0KEE TEAM XssSniper--0KEE TEAM XssSniper 扩展介绍 一直以来,隐式输出的DomXSS漏洞难以被传统的扫描工具发 ...
- xss跨站脚本攻击及xss漏洞防范
xss跨站脚本攻击(Cross Site Scripting,因与css样式表相似故缩写为XSS).恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Scrip ...
- web安全之XSS攻击原理及防范
阅读目录 一:什么是XSS攻击? 二:反射型XSS 三:存储型XSS 四:DOM-based型XSS 五:SQL注入 六:XSS如何防范? 1. cookie安全策略 2. X-XSS-Protect ...
- XSS攻击及防范
1.什么是XSS攻击 跨站脚本攻击(Cross Site Scripting),攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到 ...
- xss攻击与防范
xss攻击方式以及防范 通常来说,网站一般都是有着,用户注册,用户登录,实名认证等等这些需要用户把信息录入数据库的接口 xss找的就是这种接口,他们可以在传递数据的时候,传递恶意的 script ...
随机推荐
- 学习jsp篇:jsp简单实例之一注册
编程环境:IDEA,Tomcat ,JavaEE 实例一.注册 1.先在IDEA建一个web工程(不懂的可以在网上搜,一大堆..)ServletTest,在工程目录下的web目录建一个文件夹regis ...
- 服务器硬件及RAID配置实践
服务器硬件及RAID配置实践 1.RAID磁盘阵列介绍 2.创建RAID磁盘阵列 1.RAID:中文简称为独立冗余磁盘阵列 把多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供 ...
- c++类模板与其他
static static的成员不再单独属于一个对象,他是单独的保存在内存的某个地址,也就只有一份.所以在设计程序的时候要看这个东西是不是只需要一份. static函数和一般的函数一样,在内存中只有一 ...
- 【HDU6662】Acesrc and Travel(树型Dp)
题目链接 大意 给出一颗树,每个点上有一个权值\(A[i]\),有两个绝顶聪明的人甲和乙. 甲乙两人一起在树上轮流走,不能走之前经过的点.(甲乙时刻在一起) 甲先手,并可以确定起点.甲想要走过的点权之 ...
- Kubernetes 集群和应用监控方案的设计与实践
目录 Kubernetes 监控 监控对象 Prometheus 指标 实践 节点监控 部署 Prometheus 部署 Kube State Metrics 部署 Grafana 应用如何接入 Pr ...
- pycharm关闭pytest
在pycharm中,如果py文件以 test 开头,则运行时会使用pytest执行,pycharm关闭pytest方式如下 File -> Settings -> Tools -> ...
- Redis 源码简洁剖析 11 - 主 IO 线程及 Redis 6.0 多 IO 线程
Redis 到底是不是单线程的程序? 多 IO 线程的初始化 IO 线程运行函数 IOThreadMain 如何推迟客户端「读」操作? 如何推迟客户端「写」操作? 如何把待「读」客户端分配给 IO 线 ...
- 四路4 GSPS@ 12 bit,四路12 GSPS@16 位4T4R 射频芯片AD9988
一.产品概述 AD9988 是一款高度集成的套件,是北京太速最新研发的,具有四个 16 位.12 GSPS 最大采样率.RF 数模转换器 (DAC) 内核,以及四个 12 位.4 GSPS 速率.RF ...
- c++ TextQuery程序
TextQuery程序 我写的第一个版本 返回的是map<size_t, string>这个数据量很大,效率低下. TextQuery.h #inlucde<vector> # ...
- 从数据分析系统总架构理解BI工具的价值所在
现如今,应用商业智能BI工具的企业是越来越多了,由此也可见企业对数据分析的重视.因此,掌握一定的数据分析知识对"打工人"来说是非常重要的.现在小编就来跟大家一起来了解一下商业智能 ...