Web安全之XSS攻击与防御小结


Posted in Javascript onDecember 13, 2018

Web安全之XSS攻防

1. XSS的定义

跨站脚本攻击(Cross Site Scripting),缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

2. XSS的原理

  • 攻击者对含有漏洞的服务器发起XSS攻击(注入JS代码)。
  • 诱使受害者打开受到攻击的服务器URL。
  • 受害者在Web浏览器中打开URL,恶意脚本执行。

3. XSS的攻击方式

(1)反射型: 发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS随响应内容一起返回给浏览器,最后浏览器解析执行XSS代码,这个过程就像一次发射,所以叫反射型XSS。

(2)存储型: 存储型XSS和反射型的XSS差别就在于,存储型的XSS提交的代码会存储在服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码。

4. XSS的防御措施

(1)编码:对用户输入的数据进行HTML Entity编码

Web安全之XSS攻击与防御小结 

(2)过滤:移除用户上传的DOM属性,如onerror等,移除用户上传的style节点,script节点,iframe节点等。

(3)校正:避免直接对HTML Entity编码,使用DOM Prase转换,校正不配对的DOM标签。

5. 应用示例

构建node应用,演示反射型XSS攻击。(Linux操作系统中)

本例子的代码地址:https://github.com/Xganying/Web-XSS (xss_test1)

(1) 新建一个文件夹xss: mkdir xss_test1

(2) 切换目录到该文件夹下: cd xss

(3) 安装express: express -e ./

Web安全之XSS攻击与防御小结

(4) 构建应用依赖: npm install

Web安全之XSS攻击与防御小结

(5) 打开构建好的node应用,得到目录:

Web安全之XSS攻击与防御小结

(6) 开启node服务:npm start

Web安全之XSS攻击与防御小结

(7) 在浏览器地址栏输入:localhost:3000 ,得到:

Web安全之XSS攻击与防御小结

(8) 加入xss

修改xss_test1文件routers目?下的index.js文件:

Web安全之XSS攻击与防御小结

修改xss_test1文件views目录下的index.ejs文件:

Web安全之XSS攻击与防御小结

(9) 重启node服务:npm start ,打开浏览器

a. 在地址栏输入: localhost:3000/?xss=hello

运行结果得到:

Web安全之XSS攻击与防御小结

b. 在地址栏输入:localhost:3000/?xss=<img src="null" onerror="alert(1)">

运行结果得到:

Web安全之XSS攻击与防御小结

说明: 如果代码中没有 res.set('X-XSS-Protection', 0); 则会发现没有弹出框,这是因为浏览器自动设置了拦截XSS,所以onerror事件并不会执行,而加上了:res.set('X-XSS-Protection', 0); 才会出现弹框,这才完成了一次xss攻击。

c. 在地址栏输入:localhost:3000/?xss=<p onclick="alert(%点我%)">点我</p>

运行结果得到:

Web安全之XSS攻击与防御小结

说明: 这种攻击就是常用于篡改页面内容,破坏页面结构,引诱用户去点击一些钓鱼等网站的手段。

d. 在地址栏输入:localhost:3000/?xss=<iframe src="//baidu.com/t.html"></iframe>

运行结果得到:

Web安全之XSS攻击与防御小结

说明:这种攻击就常用于广告植入等。

简单总结就是: img标签是自动触发而受到攻击的,p标签是引诱出发而受到攻击的的,而iframe则是广告植入攻击的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 简单的进度条实现代码
Mar 11 Javascript
让innerText在firefox火狐和IE浏览器都能用的写法
May 14 Javascript
JavaScript中使用arguments获得函数传参个数实例
Aug 27 Javascript
jquery表单插件Autotab使用方法详解
Jun 24 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
Dec 13 Javascript
QRCode.js:基于JQuery的生成二维码JS库的使用
Jun 23 jQuery
js实现HTML中Select二级联动的实例
Jan 05 Javascript
Vue动态控制input的disabled属性的方法
Jun 26 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
May 14 Javascript
微信小程序云开发之使用云存储
May 17 Javascript
微信小程序之数据绑定原理解析
Aug 14 Javascript
TypeScript之调用栈的实现
Dec 31 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
Dec 13 #Javascript
深入理解js A*寻路算法原理与具体实现过程
Dec 13 #Javascript
Vue.js上传图片到阿里云OSS存储的方法示例
Dec 13 #Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
Dec 13 #Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
Dec 13 #Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
Dec 13 #Javascript
详解Express笔记之动态渲染HTML(新手入坑)
Dec 13 #Javascript
You might like
支持中文、字母、数字的PHP验证码
2015/05/04 PHP
PHP MPDF中文乱码的解决方式
2015/12/08 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
PHP获取星期几的常用方法小结
2018/12/18 PHP
JS array 数组详解
2009/03/22 Javascript
Jquery iframe内部出滚动条
2010/02/11 Javascript
javascript的函数、创建对象、封装、属性和方法、继承
2011/03/10 Javascript
js如何实现设计模式中的模板方法
2013/07/23 Javascript
jquery选择器简述
2015/08/31 Javascript
深入浅析同源策略和跨域访问
2015/11/26 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
js中DOM三级列表(代码分享)
2017/03/20 Javascript
基于jQuery实现定位导航位置效果
2017/11/15 jQuery
JavaScript箭头函数中的this详解
2019/06/19 Javascript
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
使用Node.js和Socket.IO扩展Django的实时处理功能
2015/04/20 Python
Python3遍历目录树实现方法
2015/05/22 Python
Python探索之pLSA实现代码
2017/10/25 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
2019/03/05 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
2019/06/19 Python
Python中的单下划线和双下划线使用场景详解
2019/09/09 Python
Python装饰器结合递归原理解析
2020/07/02 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
基于zepto的插件之移动端无缝向上滚动并上下触摸滑动实例代码
2016/12/20 HTML / CSS
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
人事行政主管岗位职责
2013/12/22 职场文书
给交警的表扬信
2014/01/12 职场文书
经贸专业毕业生求职信范文
2014/05/01 职场文书
2014高考励志标语
2014/06/05 职场文书
毕业论文致谢词
2015/05/14 职场文书
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript