您当前的位置:首页 > 电脑百科 > 安全防护 > 服务器/网站

XSS的两种攻击原理及五种防御方式

时间:2020-01-07 09:58:43  来源:  作者:

XSS的两种攻击原理及五种防御方式

 

XSS简介

跨站脚本攻击指的是自己的网站运行了别的网站里面的代码
攻击原理是原本需要接受数据但是一段脚本放置在了数据中:

XSS的两种攻击原理及五种防御方式

XSS攻击原理


XSS攻击能做什么?

  • 获取页面数据
  • 获取Cookies
  • 劫持前端逻辑
  • 发送请求到攻击者自己的网站实现资料的盗取
  • 偷取网站任意数据
  • 偷取用户密码和登陆状态
  • 改变按钮的逻辑

XSS攻击类型

其实XSS的种类非常的多尤其是变种的特别多,大致可以分为两种
反射型:是通过URL参数直接注入,一般是使用alert来探测站点是否防御,直接攻击的使用src来引入自己的脚本

http://localhost:1521/?from=<script>alert(1)</script>bing

存储型:存储到DB后读取时注入(危害很大)
在评论的时候写script标签,这样数据就是存储在数据库中的,如果该页面要读取出这条有script标签的信息那么将这个网址发给别人别人也会中招。

XSS攻击注入点:

html节点内容:如果一个节点是动态生成的,有可能这个节点的数据有脚本(用户输入信息)

html属性:某个html的属性是由用户输入的,输入的内容可能有脚本

<img src="1" onerror="alert(1)"/>1" onerror="alert(1) // src被提前关闭

js代码:js代码中存在后台注入的变量或者用户输入的信息

localhost:1521/?from=google";alert(1);"

富文本:其实是一大段的html,我们需要保留格式又要去掉script标签,这是比较麻烦的

富文本得保留HTML,HTML有XSS就有攻击风险
实际上浏览器有着XSS的部分防御机制,可以通过

ctx.set('X-XSS-Protection',0); // 0-disable 1-enable

来进行关闭,浏览器的防御很有限,只能是反射型的参数并且出现在html节点和属性中才会进行防御,在js和富文本中是不会拦截的。

五种防御方式

HTML节点内容的XSS防御
转义掉<<和>> 即转义掉<>即可,转义的时机有两种,一种是写入数据库的时候进行转义,另一种是在解析的时候进行转义。

这里是在显示的时候转义

var escapeHtml = function(str){  str = str.replace(/>/g, '<');  str = str.replace(/>/g, '>');  return str;}escapeHtml(content);

HTML属性的XSS防御
转义”&quto; 即转义掉双引号,'转义掉单引号,(另一个要注意的是实际上html的属性可以不包括引号,因此严格的说我们还需要对空格进行转义,但是这样会导致渲染的时候空格数不对,因此我们不转义空格,然后再写html属性的时候全部带上引号)这样属性就不会被提前关闭了

var escapeHtmlProperty = function(str){  str = str.replace(/"/g, '&quto;');  str = str.replace(/'/g, ''');  str = str.replace(/ /g, ' ');  return str;}escapeHtml(content);

其实以上这两个函数可以合并成一个函数,这样不管是内容还是属性都可以使用一个函数来过滤了:

HTML转义函数

var escapeHtmlProperty = function(str){  if(!str) return '';  str = str.replace(/&/g, '&');  str = str.replace(/>/g, '<');   str = str.replace(/>/g, '>');  str = str.replace(/"/g, '&quto;');  str = str.replace(/'/g, ''');  return str;}escapeHtml(content);

js转义

转义””或者替换成json

var escapeForJs = function(str){ if(!str) return ''; str = str.replace(/\/g,'\\'); str = str.replace(/"/g,'\"');}

这里的解决方式并不完整,因为还有可能是单引号或者其他形势包裹的,这里最保险的方法其实很简单,就是对数据做一次JSON.stringify即可

富文本

由于需要完整的HTML因此不太容易过滤,一般是按照白名单进行保留部分标签和属性来进行过滤,除了允许的标签和属性,其他的全部不允许(也有黑名单的方式,但是由于html复杂效果比较差,原理就是之前的正则替换)

其实可以用别人写好的XSS组件就叫做xss,直接

npm install xss

白名单-使用第三方库XSS,支持指定白名单

var xssFilter = function(html){    if(!html) return '';    var xss = require('xss');    var ret = xss(html, {        whiteList:{            img: ['src'],            a: ['href'],            font: ['size', 'color']        },        onIgnoreTag: function(){            return '';        }    });    console.log(html, ret);    return ret;};

本文作者熊冰,个人网站[Bing的天涯路],转载请注明作者和出处。



Tags:XSS   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
10月18号, W3C中网络平台孵化器小组(Web Platform Incubator Community Group)公布了HTML Sanitizer API的规范草案。这份草案用来解决浏览器如何解决XSS攻击问题。 网络安全中...【详细内容】
2021-12-07  Tags: XSS  点击:(20)  评论:(0)  加入收藏
一.XSSI漏洞原理同源策略同源策略是Web应用程序安全模型中最基本也是最核心的策略。现在所有支持JavaScript的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。同源...【详细内容】
2021-07-14  Tags: XSS  点击:(84)  评论:(0)  加入收藏
一、CSRFCSRF 全称叫做,跨站请求伪造(Cross&mdash;Site Request Forgery),顾名思义,攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成...【详细内容】
2021-06-10  Tags: XSS  点击:(125)  评论:(0)  加入收藏
什么是XSS跨站攻击CSS(Cross Site Script),又叫XSS跨站脚本攻击。它指的是恶意攻击者往Web页面的HTML代码中插入恶意的ActiveX、HTML、JavaScript、Flash或VBScript脚本,当用户...【详细内容】
2021-01-22  Tags: XSS  点击:(133)  评论:(0)  加入收藏
概述XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器 执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人...【详细内容】
2020-10-13  Tags: XSS  点击:(174)  评论:(0)  加入收藏
作者:陈吉转发链接:https://mp.weixin.qq.com/s/HweEFh78WXLawyQr_Vsl5g前言前端一般会面临 XSS 这样的安全风险,但随着 React 等现代前端框架的流行,使我们在平时开发时不用太...【详细内容】
2020-09-24  Tags: XSS  点击:(153)  评论:(0)  加入收藏
不知道各位有没有被各类XSS攻击、点击劫持 (ClickJacking、 frame 恶意引用等等方式骚扰过,百度联盟被封就有这些攻击的功劳在里面。为此一直都在搜寻相关防御办法,...【详细内容】
2020-09-21  Tags: XSS  点击:(145)  评论:(0)  加入收藏
一、一般可利用的编码1.URL编码格式:%十六进制数 记住常用符号、字母的 ASCII 码,能熟练转换 10 -16 进制即可。中文的URL编码略有不同,因为用的地方没有,也就不想写了如何利用:...【详细内容】
2020-08-12  Tags: XSS  点击:(116)  评论:(0)  加入收藏
不知道各位有没有被各类XSS攻击、点击劫持 (ClickJacking、 frame 恶意引用等等方式骚扰过,百度联盟被封就有这些攻击的功劳在里面。为此一直都在搜寻相关防御办法,...【详细内容】
2020-08-10  Tags: XSS  点击:(80)  评论:(0)  加入收藏
跨站脚本漏洞(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私、钓鱼欺骗、窃取密码、传播恶意代码等攻击。XSS攻击使用到的技术主要为HTML和Javascript...【详细内容】
2020-07-28  Tags: XSS  点击:(275)  评论:(0)  加入收藏
▌简易百科推荐
在最近的一波攻击中,黑客利用多个插件中未修补的漏洞攻击了 160 万个 WordPress 网站。 易受攻击的插件对 WordPress 网站产生了的巨大攻击数据。 Wordfence 最近发现 WordPr...【详细内容】
2021-12-16  蚁安    Tags:WordPress   点击:(9)  评论:(0)  加入收藏
事件起因从安全分析系统里面发现一条带有病毒的下载,然后针对这条记录展开了一系列的分析分析过程1.登录到被感染服务器,查看系统状况,hadoop 这个用户在 2020/6/18 20:32 从这...【详细内容】
2021-11-23  Z2990Lig    Tags:SSH   点击:(32)  评论:(0)  加入收藏
1、除了服务器需要用的一些正规软件,其它都不要安装。2、在用户中把administrator改名,这样做的目的是即使对方暴破了我们的密码用户名也不容易猜住,相当于又加了一道关卡。...【详细内容】
2021-11-01  IT小哥吧    Tags:服务器   点击:(37)  评论:(0)  加入收藏
账户安全(1)更名administrator本地用户并禁用guest账户步骤:点击“开始”,找到“管理工具”,点击里面的“计算机管理”,找到“本地用户和组” (2)设定账户锁定策略尝试5次失败...【详细内容】
2021-10-12  Kali与编程  今日头条  Tags:Windows主机   点击:(62)  评论:(0)  加入收藏
本文主要介绍以Microsoft的Windows Server 2019 ,版本:Datacenter(Domain Controller)安全加固保护.企业随着规模不断扩大,业务增多,信息安全建设是企业里一条只有重点没有终点...【详细内容】
2021-09-17  Vireshark    Tags:服务器安全   点击:(64)  评论:(0)  加入收藏
目录常见共享命令IPC$IPC$的利用条件1:开启了139、445端口2:目标主机开启了IPC$共享3:IPC连接报错IPC空连接空连接可以做什么?(毫无作用)IPC$非空连接IPC$非空连接可以做什么?di...【详细内容】
2021-09-16  网络说安全    Tags:系统安全   点击:(86)  评论:(0)  加入收藏
昨天一个老哥找到我,说他的服务器这几天一直被CC攻击,问我这边有没有什么解决的方法? 近年来,网络攻击事件越来越频繁,最常见的就是CC攻击和DDOS攻击,主要的区别就是针对的对象不...【详细内容】
2021-09-10  小蚁GDRAGON    Tags:cc攻击   点击:(58)  评论:(0)  加入收藏
网站页面上的登录操作,通常都是输入帐号密码,传输至网站后台验证。在网站页面、数据传输中,通过技术手段,都可以得到用户输入的信息,并可以修改,从而发起网络攻击。典型的如:使用自...【详细内容】
2021-08-30  修丹道的程序猿    Tags:登录方式   点击:(62)  评论:(0)  加入收藏
网络安全研究人员披露了一类影响主要 DNS 即服务 (DNSaaS) 提供商的新漏洞,这些漏洞可能允许攻击者从企业网络中窃取敏感信息。基础设施安全公司 Wiz 的研究人员 Shir Tamar...【详细内容】
2021-08-12  零日时代    Tags:漏洞   点击:(66)  评论:(0)  加入收藏
001暴力破解1. 指定用户名爆破密码传统型爆破思路,用户名可以通过猜测或者信息收集获得。猜测:admin、网站域名等信息收集:新闻发布人、whoami等2. 指定密码爆破用户名如果是后...【详细内容】
2021-07-23  KaliMa  今日头条  Tags:登陆框   点击:(85)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条