Web安全之XSS攻击与防御小结

 更新时间:2018年12月13日 11:29:08   作者:Cynthia(小英子)  
这篇文章主要介绍了Web安全之XSS攻击与防御小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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编码

 

(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 ./

(4) 构建应用依赖: npm install

(5) 打开构建好的node应用,得到目录:

(6) 开启node服务:npm start

(7) 在浏览器地址栏输入:localhost:3000 ,得到:

(8) 加入xss

修改xss_test1文件routers目録下的index.js文件:

修改xss_test1文件views目录下的index.ejs文件:

(9) 重启node服务:npm start ,打开浏览器

a. 在地址栏输入: localhost:3000/?xss=hello

运行结果得到:

b. 在地址栏输入:localhost:3000/?xss=<img src="null" onerror="alert(1)">

运行结果得到:

说明: 如果代码中没有 res.set('X-XSS-Protection', 0); 则会发现没有弹出框,这是因为浏览器自动设置了拦截XSS,所以onerror事件并不会执行,而加上了:res.set('X-XSS-Protection', 0); 才会出现弹框,这才完成了一次xss攻击。

c. 在地址栏输入:localhost:3000/?xss=<p onclick="alert(%点我%)">点我</p>

运行结果得到:

说明: 这种攻击就是常用于篡改页面内容,破坏页面结构,引诱用户去点击一些钓鱼等网站的手段。

d. 在地址栏输入:localhost:3000/?xss=<iframe src="//baidu.com/t.html"></iframe>

运行结果得到:

说明:这种攻击就常用于广告植入等。

简单总结就是: img标签是自动触发而受到攻击的,p标签是引诱出发而受到攻击的的,而iframe则是广告植入攻击的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • js不间断滚动的简单实现

    js不间断滚动的简单实现

    下面小编就为大家带来一篇js不间断滚动的简单实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • 谈谈JavaScript数组常用方法总结

    谈谈JavaScript数组常用方法总结

    本篇文章主要介绍了谈谈JavaScript数组常用方法总结,在JavaScript中,我们需要时常对数组进行操作。一起跟随小编过来看看吧
    2017-01-01
  • JavaScript对象属性设置和屏蔽技巧

    JavaScript对象属性设置和屏蔽技巧

    这篇文章主要为大家介绍了JavaScript对象属性设置和屏蔽技巧,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Echarts Bar横向柱状图实例代码

    Echarts Bar横向柱状图实例代码

    柱状图主要用于表示离散数据的频数,也是一种基础可视化图,这篇文章主要给大家介绍了关于Echarts Bar横向柱状图的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-08-08
  • Layui Table js 模拟选中checkbox的例子

    Layui Table js 模拟选中checkbox的例子

    今天小编就为大家分享一篇Layui Table js 模拟选中checkbox的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • 学习JavaScript一定要知道的3个小技巧

    学习JavaScript一定要知道的3个小技巧

    这篇文章主要给大家分享的是学习JavaScript一定要知道的3个小技巧,通常在 Angular 或 React 项目中,code review 时看到一些老式的 JavaScript 代码,就会将开发人员归类为初学者,下面我们就来一起看看初学者需要知道的三个小技巧,需要的朋友可以参考一下
    2021-12-12
  • javascript(jquery)利用函数修改全局变量的代码

    javascript(jquery)利用函数修改全局变量的代码

    现在博客系统的评论遇到一个问题,用户点击“最后一页”链接之后就自动调取最后一页的资料来显示。
    2009-11-11
  • JavaScript数组方法reduce使用详解

    JavaScript数组方法reduce使用详解

    本文详细介绍了JavaScript数组reduce()方法的使用,包括核心语法、常见案例以及常见错误,通过实际案例和代码分析,帮助读者彻底掌握reduce方法,同时,还提供了reduce的polyfill实现,以深入理解其工作原理,需要的朋友可以参考下
    2025-02-02
  • js实现上传文件添加和删除文件选择框

    js实现上传文件添加和删除文件选择框

    这篇文章主要为大家详细介绍了js实现上传文件添加和删除文件选择框 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • 超酷的网页音乐播放器DewPlayer使用方法

    超酷的网页音乐播放器DewPlayer使用方法

    在网上闲逛的时候无意中看到 Dewplayer 播放器,感觉不错,特此分享。
    2010-12-12

最新评论