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 - HTML的request类
Jul 15 Javascript
通过JAVASCRIPT读取ASP设定的COOKIE
Feb 15 Javascript
JavaScript实现网页上的浮动广告的简单方法
Jun 14 Javascript
jquery实现ajax提交form表单的方法总结
Mar 03 Javascript
技术男用来对妹子表白的百度首页
Jul 23 Javascript
js读写json文件实例代码
Oct 21 Javascript
angularjs指令中的compile与link函数详解
Dec 06 Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
Sep 25 Javascript
javascript 中select框触发事件过程的分析
Aug 01 Javascript
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
Jul 26 Javascript
浅谈js闭包理解
Mar 28 Javascript
多种类型jQuery网页验证码插件代码实例
Jan 09 jQuery
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 归并排序 数组交集
2011/05/10 PHP
php编程实现获取excel文档内容的代码实例
2011/06/28 PHP
php5.5中类级别的常量使用介绍
2013/10/02 PHP
php中rename函数用法分析
2014/11/15 PHP
PHP两个n位的二进制整数相加问题的解决
2018/08/26 PHP
Javascript-Mozilla和IE中的一个函数直接量的问题
2007/01/09 Javascript
利用JQuery制作符合Web标准的QQ弹出消息
2014/01/14 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
2014/04/04 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
require简单实现单页应用程序(SPA)
2016/07/12 Javascript
Javascript 判断两个IP是否在同一网段实例代码
2016/11/28 Javascript
详解VUE2.X过滤器的使用方法
2018/01/11 Javascript
微信小程序progress组件使用详解
2018/01/31 Javascript
解析Vue.js中的组件
2018/02/02 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
使用elementUI实现将图片上传到本地的示例
2018/09/04 Javascript
jQuery实现的点击图片居中放大缩小功能示例
2019/01/16 jQuery
原生JS实现贪吃蛇小游戏
2020/03/09 Javascript
浅谈Vue使用Elementui修改默认的最快方法
2020/12/05 Vue.js
python正则表达式去掉数字中的逗号(python正则匹配逗号)
2013/12/25 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
2019/11/19 Python
Python嵌套函数,作用域与偏函数用法实例分析
2019/12/26 Python
使用python处理题库表格并转化为word形式的实现
2020/04/14 Python
解决Keras 自定义层时遇到版本的问题
2020/06/16 Python
快速解释如何使用pandas的inplace参数的使用
2020/07/23 Python
python Matplotlib基础--如何添加文本和标注
2021/01/26 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
介绍一下如何优化MySql
2016/12/20 面试题
员工工作表扬信范文
2014/01/13 职场文书
高二历史教学反思
2014/01/25 职场文书
经营管理策划方案
2014/05/22 职场文书
学校联谊协议书
2014/09/16 职场文书
高二学年自我鉴定范文(2篇)
2014/09/26 职场文书
高考升学宴答谢词
2015/01/20 职场文书
教师读书活动心得体会
2016/01/14 职场文书
nginx搭建图片服务器的过程详解(root和alias的区别)
2021/03/31 Servers