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 相关文章推荐
JavaScript 继承使用分析
May 12 Javascript
JSON 数字排序多字段排序介绍
Sep 18 Javascript
js中的referrer返回上一页使用介绍
Sep 26 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
Jul 29 Javascript
使用jquery组件qrcode生成二维码及应用指南
Feb 22 Javascript
AngularJS使用angular.bootstrap完成模块手动加载的方法分析
Jan 19 Javascript
详解JavaScript对象的深浅复制
Mar 30 Javascript
微信小程序 setData使用方法及常用错误解决办法
May 11 Javascript
vue.js-div滚动条隐藏但有滚动效果的实现方法
Mar 03 Javascript
Js on及addEventListener原理用法区别解析
Jul 11 Javascript
构建一个JavaScript插件系统
Oct 20 Javascript
详解JSON.parse和JSON.stringify用法
Feb 18 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
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
2013/06/03 PHP
百度地图API使用方法详解
2015/08/25 PHP
JavaScript 撑出页面文字换行
2009/06/15 Javascript
javascript常用方法总结
2015/05/14 Javascript
BootStrap实现手机端轮播图左右滑动事件
2016/10/13 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
2017/01/06 Javascript
超全面的javascript中变量命名规则
2017/02/09 Javascript
jQuery实用密码强度检测
2017/03/02 Javascript
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
利用Vue.js+Node.js+MongoDB实现一个博客系统(附源码)
2017/04/24 Javascript
简单的vuex 的使用案例笔记
2018/04/13 Javascript
node前端模板引擎Jade之标签的基本写法
2018/05/11 Javascript
深入浅析var,let,const的异同点
2018/08/07 Javascript
使用Node.js在深度学习中做图片预处理的方法
2019/09/18 Javascript
Python 时间操作例子和时间格式化参数小结
2014/04/24 Python
Python入门篇之编程习惯与特点
2014/10/17 Python
用Python的pandas框架操作Excel文件中的数据教程
2015/03/31 Python
python生成随机密码或随机字符串的方法
2015/07/03 Python
Python 的内置字符串方法小结
2016/03/15 Python
Python自定义类的数组排序实现代码
2016/08/28 Python
python实现感知器
2017/12/19 Python
Python3几个常见问题的处理方法
2019/02/26 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
Python实现使用dir获取类的方法列表
2019/12/24 Python
jupyter notebook实现显示行号
2020/04/13 Python
pandas数据分组groupby()和统计函数agg()的使用
2021/03/04 Python
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
Marmot土拨鼠官网:美国专业户外运动品牌
2018/01/11 全球购物
会计专业大学生求职信范文
2014/01/28 职场文书
《奇妙的国际互联网》 教学反思
2014/02/25 职场文书
实践单位评语
2014/04/26 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
初婚初育证明范本
2014/11/24 职场文书
PHP 对接美团大众点评团购券(门票)的开发步骤
2021/04/03 PHP
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js