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 研究心得 取得属性的值
Nov 30 Javascript
js正确获取元素样式详解
Aug 07 Javascript
JQERY limittext 插件0.2版(长内容限制显示)
Aug 27 Javascript
jQuery简易图片放大特效示例代码
Jun 09 Javascript
原生javascript实现简单的datagrid数据表格
Jan 02 Javascript
JS实现跟随鼠标的链接文字提示框效果
Aug 06 Javascript
AngularJs Javascript MVC 框架
Jun 20 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
Aug 17 Javascript
vue 自定义 select内置组件
Apr 10 Javascript
如何在Vue.js中实现标签页组件详解
Jan 02 Javascript
vue+elementUI动态生成面包屑导航教程
Nov 04 Javascript
如何用JS模拟实现数组的map方法
Jul 30 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+Html+缓存
2006/11/25 PHP
PHP 用数组降低程序的时间复杂度
2009/12/04 PHP
php数组转换js数组操作及json_encode的用法详解
2013/10/26 PHP
php查找字符串出现次数的方法
2014/12/01 PHP
php提示Failed to write session data错误的解决方法
2014/12/17 PHP
Apache服务器下防止图片盗链的办法
2015/07/06 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
jquery+json 通用三级联动下拉列表
2010/04/19 Javascript
新发现一个骗链接的方法(js读取cookies)
2012/01/11 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
JS &amp; JQuery 动态添加 select option
2016/06/08 Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
2016/07/01 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
2017/02/10 Javascript
详解JavaScript中的链式调用
2020/11/27 Javascript
[03:31]DOTA2英雄基础教程 大地之灵
2013/12/17 DOTA
python基础教程之简单入门说明(变量和控制语言使用方法)
2014/03/25 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
python 内置函数filter
2017/06/01 Python
Python实现找出数组中第2大数字的方法示例
2018/03/26 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
python逆序打印各位数字的方法
2018/06/25 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
2019/05/04 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
python爬虫容易学吗
2020/06/02 Python
python selenium xpath定位操作
2020/09/01 Python
地图可视化神器kepler.gl python接口的使用方法
2020/12/22 Python
Hunter Boots美国官方网站:赫特威灵顿雨靴
2018/06/16 全球购物
文秘专业个人求职信
2013/12/22 职场文书
大三学生入党思想汇报
2014/01/02 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书
初中英语教学反思范文
2016/02/15 职场文书
redis 存储对象的方法对比分析
2021/08/02 Redis
Python探索生命起源 matplotlib细胞自动机动画演示
2022/04/21 Python