XSS, 即为(Cross Site Scripting), 中文名为跨站脚本, 是发生在目标用户的浏览器层面上的,当渲染DOM树的过程成发生了不在预期内执行的JS代码时,就发生了XSS攻击。html
跨站脚本的重点不在‘跨站’上,而在于‘脚本’上。大多数XSS攻击的主要方式是嵌入一段远程或者第三方域上的JS代码。其实是在目标网站的做用域下执行了这段js代码。前端
1.盗用cookie 获取敏感信息git
2.破坏页面结构 插入恶意内容(反射性)github
3.利用flash(了解)web
4.DDOS(强大 难以防护)数据库
DDOS:分布式拒绝服务攻击(Distributed Denial of Service),简单说就是发送大量请求是使服务器瘫痪。DDos攻击是在DOS攻击基础上的,能够通俗理解,dos是单挑,而ddos是群殴,由于现代技术的发展,dos攻击的杀伤力下降,因此出现了DDOS,攻击者借助公共网络,将大数量的计算机设备联合起来,向一个或多个目标进行攻击。express
在技术角度上,DDoS攻击能够针对网络通信协议的各层,手段大体有:TCP类的SYN Flood、ACK Flood,UDP类的Fraggle、Trinoo,DNS Query Flood,ICMP Flood,Slowloris类等等。通常会根据攻击目标的状况,针对性的把技术手法混合,以达到最低的成本最难防护的目的,而且能够进行合理的节奏控制,以及隐藏保护攻击资源。npm
下面介绍一下TCP协议中的SYN攻击。浏览器
常见的web攻击总结:http://www.javashuo.com/article/p-sdrhzktr-gu.html安全
反射型
发出请求时,XSS代码出如今URL中,做为输入提交到服务器端,服务器解析后响应,XSS代码随响应内容一块儿传回给浏览器,最后浏览器解析执行XSS代码。这个过程想一次反射,故叫反射型XSS
存储型(持久型XSS漏洞)
存储型XSS和反射型XSS的差异仅在于,提交的代码会存储在服务器端(数据库、内存、文件系统等),下次请求目标页面时不用再提交XSS代码
DOM XSS
DOM XSS攻击不一样于反射型XSS和存储型XSS,DOM XSS代码不须要服务器端的解析响应的直接参与,而是经过浏览器端的DOM解析。这彻底是客户端的事情。
DOM XSS代码的攻击发生的可能在于咱们编写JS代码形成的。咱们知道eval语句有一个做用是将一段字符串转换为真正的JS语句,所以在JS中使用eval是很危险的事情,容易形成XSS攻击。避免 使用eval语句。
构建Node服务进行演示
1.新建文件夹,命令行输入:
express -e ./
使用express脚手架,用ejs做为模板引擎,在当前目录执行npm install
安装依赖2.在routes/index.js下设置路由:
router.get('/', function(req, res, next) { res.set('X-XSS-Protection',0); //关掉浏览器对XSS的检测 res.render('index',{ title:'Express',xss:req.query.xss }); }); //query是express获取search的字段
3.在views/index.ejs中的body部分添加:
<div class=""> <%- xss %><!--'-'表示容许输入html,不须要转义--> </div>
4.命令行输入:
npm start
开启服务器
5.在http://localhost:3000/后输入
?xss=<iframe src="//baidu.com/h.html"></iframe>
或者?xss=<img src="null" onerror="alert("1")">
或者?xss=<p onclick="alert("1")">点我</p>
进行模仿XSS的放射型攻击。第一个效果以下图:
对cookie保护
对重要的cookie设置httpOnly, 防止客户端经过document.cookie
读取cookie。服务端能够设置此字段。
对用户输入的内容
1.编码:对用户输入的数据进行HTML Entity编码
2.解码:
避免直接对HTML Entity编码
使用DOM Parse转码,校订不配对的DOM标签
3.过滤:
移除用户上传的DOM属性,如onerror,onclick等
移除用户上传的Style节点、Script节点、 iframe节点等
1.文本由服务器端转义,客户端反转义,再DomParse,再过滤
2.使用encode.js和domparse.js第三方库对文本进行解码和DOM parse操做
项目连接:https://github.com/ickedesign/XSS_WebSecurity