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 相关文章推荐
精解window.setTimeout()&amp;window.setInterval()使用方式与参数传递问题!
Nov 23 Javascript
jquery Mobile入门—外部链接切换示例代码
Jan 08 Javascript
node.js实现逐行读取文件内容的代码
Jun 27 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
Mar 03 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
Jun 09 Javascript
js微信扫描二维码登录网站技术原理
Dec 01 Javascript
解析利用javascript如何判断一个数为素数
Dec 08 Javascript
微信小程序 石头剪刀布实例代码
Jan 04 Javascript
js实现每日签到功能
Nov 29 Javascript
详解超简单的react服务器渲染(ssr)入坑指南
Feb 28 Javascript
详解Vue中的Props与Data细微差别
Mar 02 Javascript
javascript中闭包closure的深入讲解
Mar 03 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(3)
2006/10/09 PHP
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
thinkPHP实现的联动菜单功能详解
2017/05/05 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
PHP数组array类常见操作示例
2020/05/15 PHP
jquery 操作单选框,复选框,下拉列表实现代码
2009/10/27 Javascript
jquery操作select option 的代码小结
2011/06/21 Javascript
js类型转换与引用类型详解(Boolean_Number_String)
2014/03/07 Javascript
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
2015/08/15 Javascript
js+css简单实现网页换肤效果
2015/12/29 Javascript
Js的Array数组对象详解
2016/02/22 Javascript
JavaScript 节流函数 Throttle 详解
2016/07/04 Javascript
HTML5 canvas 9绘制图片实例详解
2016/09/06 Javascript
jQuery遍历节点树方法分析
2016/09/08 Javascript
bootstrap导航条实现代码
2016/12/28 Javascript
Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证)
2017/05/09 Javascript
微信小程序使用swiper组件实现层叠轮播图
2018/11/04 Javascript
pycharm 使用心得(四)显示行号
2014/06/05 Python
python机器学习理论与实战(五)支持向量机
2018/01/19 Python
python绘制圆柱体的方法
2018/07/02 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
Python使用进程Process模块管理资源
2020/03/05 Python
Python Tornado之跨域请求与Options请求方式
2020/03/28 Python
python实现npy格式文件转换为txt文件操作
2020/07/01 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
如何利用python发送邮件
2020/09/26 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
2021/02/16 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
Hotels.com香港酒店网:你的自由行酒店订房专家
2018/01/22 全球购物
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
安全责任协议书
2014/04/21 职场文书
公司大门门卫岗位职责
2014/06/11 职场文书
公安机关查摆剖析材料
2014/10/10 职场文书
人事专员岗位职责
2015/02/03 职场文书
岗位聘任协议书
2015/09/21 职场文书
超详细教你怎么升级Mysql的版本
2021/05/19 MySQL