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 相关文章推荐
js自定义方法通过隐藏iframe实现文件下载
Feb 21 Javascript
Jquery如何实现点击时高亮显示代码
Jan 22 Javascript
用javascript将数据导入Excel示例代码
Sep 10 Javascript
node.js中的fs.fstatSync方法使用说明
Dec 15 Javascript
JavaScript中函数(Function)的apply与call理解
Jul 08 Javascript
javascript实现简单加载随机色方块
Dec 25 Javascript
jquery css实现邮箱自动补全
Nov 14 Javascript
Vue2.0组件间数据传递示例
Mar 07 Javascript
详解vue父子组件间传值(props)
Jun 29 Javascript
微信小程序组件之srcoll-view的详解
Oct 19 Javascript
使用vue完成微信公众号网页小记(推荐)
Apr 28 Javascript
基于Vue el-autocomplete 实现类似百度搜索框功能
Oct 25 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实现HTTP断点续传的方法
2015/06/17 PHP
PHP中substr函数字符串截取用法分析
2016/01/07 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
浅谈PHP array_search 和 in_array 函数效率问题
2019/10/15 PHP
Cookie跨域问题解决方案代码示例
2020/11/24 PHP
js防止表单重复提交实现代码
2012/09/05 Javascript
jquery实现两个图片渐变切换效果的方法
2015/06/25 Javascript
javascript实现日期时间动态显示示例代码
2015/09/08 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
js仿QQ中对联系人向左滑动、滑出删除按钮的操作
2016/04/07 Javascript
JQuery 传送中文乱码问题的简单解决办法
2016/05/24 Javascript
Vue.js实战之组件之间的数据传递
2017/04/01 Javascript
vue.js 获取当前自定义属性值
2017/06/01 Javascript
微信小程序使用wxParse解析html的方法示例
2019/01/17 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
2019/07/02 Javascript
微信小程序button标签open-type属性原理解析
2020/01/21 Javascript
JS中作用域以及变量范围分析
2020/07/18 Javascript
详解uniapp的全局变量实现方式
2021/01/11 Javascript
python网络编程学习笔记(10):webpy框架
2014/06/09 Python
python实现将英文单词表示的数字转换成阿拉伯数字的方法
2015/07/02 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
windows下python连接oracle数据库
2017/06/07 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
python实现倒计时小工具
2019/07/29 Python
python数字类型math库原理解析
2020/03/02 Python
Python3 assert断言实现原理解析
2020/03/02 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
python语言time库和datetime库基本使用详解
2020/12/25 Python
世界排名第一的运动鞋市场:Flight Club
2020/01/03 全球购物
建筑设计学生的自我评价
2014/01/16 职场文书
励志演讲稿500字
2014/08/21 职场文书
六查六看自查报告
2014/10/14 职场文书
2015年党风廉政承诺书
2015/01/22 职场文书
2016党员学习心得体会范文
2016/01/23 职场文书
详解在OpenCV中如何使用图像像素
2022/03/03 Python