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 相关文章推荐
Whatever:hover 无需javascript让IE支持丰富伪类
Jun 29 Javascript
你必须知道的Javascript知识点之&quot;单线程事件驱动&quot;的使用
Apr 23 Javascript
ajax提交表单实现网页无刷新注册示例
May 08 Javascript
jQuery中:gt选择器用法实例
Dec 29 Javascript
JavaScript中的this到底是什么(一)
Dec 09 Javascript
原生js实现百叶窗效果及原理介绍
Apr 12 Javascript
详解webpack解惑:require的五种用法
Jun 09 Javascript
jQuery获取随机颜色的实例代码
May 21 jQuery
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
Apr 08 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
Apr 26 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
May 06 Javascript
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
Apr 13 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自动生成月历代码
2006/10/09 PHP
PHP实现二维数组根据key进行排序的方法
2016/12/30 PHP
javascript 获取表单file全路径
2009/12/31 Javascript
JavaScript中URL编码函数代码
2011/01/11 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
jquery+ajax实现直接提交表单实例分析
2016/06/17 Javascript
[原创]jQuery常用的4种加载方式分析
2016/07/25 Javascript
JavaScript使用Ajax上传文件的示例代码
2017/08/10 Javascript
jQuery获取复选框选中的当前行的某个字段的值
2017/09/15 jQuery
在vue中读取本地Json文件的方法
2018/09/06 Javascript
vue.js父子组件通信动态绑定的实例
2018/09/28 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
2018/11/16 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
vue中axios请求的封装实例代码
2019/03/23 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
2019/07/10 jQuery
vue-property-decorator用法详解
2019/12/12 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
2020/10/21 Javascript
Python contextlib模块使用示例
2015/02/18 Python
使用python 爬虫抓站的一些技巧总结
2018/01/10 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
2018/06/26 Python
Python socket套接字实现C/S模式远程命令执行功能案例
2018/07/06 Python
简单了解pytest测试框架setup和tearDown
2020/04/14 Python
浅谈cookie和localStorage那些事
2019/08/27 HTML / CSS
阿迪达斯意大利在线商店:adidas意大利
2016/09/19 全球购物
BRASTY捷克:购买香水、化妆品、手袋和手表
2017/07/12 全球购物
美国经典刺绣和字母儿童服装特卖:Smocked Auctions
2018/07/16 全球购物
美国专业汽车音响和移动电子产品零售商:Car Toys
2019/05/13 全球购物
教导主任竞聘演讲稿
2014/05/16 职场文书
个人担保书范文
2014/05/20 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
医院感染管理制度
2015/08/05 职场文书
2019年描写人生经典诗句大全
2019/07/08 职场文书
SQL 聚合、分组和排序
2021/11/11 MySQL
Redis实战之Lettuce的使用技巧详解
2022/12/24 Redis