你知道跨站脚本攻击吗?一篇带你了解什么叫做XSS

1.XSS简介

(1)XSS简介

XSS作为OWASP TOP 10之一。

XSS中文叫做跨站脚本攻击(Cross-site scripting),本名应该缩写为CSS,但是由于CSS(Cascading Style Sheets,层叠样式脚本)重名,所以更名为XSS。XSS(跨站脚本攻击)主要基于javascript(js)来完成恶意的攻击行为。

XSS是一种经常出现在web应用中的计算机大全漏洞,也是web中最主流的攻击方式。那么什么是XSS呢?

XSS是指恶意攻击者利用网站对用户提交的数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去。使别的用户访问都会执行相应的嵌入代码。

从而盗取用户资料、利用用户身份进行某种动作或者访问者进行病毒侵害的一种攻击方式。

(2)XSS原理

利用我们所知道的各种黑魔法,向web页面插入js代码,让js代码可以被浏览器执行,访问该页面 的用户则被攻击。

(3)XSS的危害

针对用户
窃取cookie劫持的会话
网络钓鱼
放马挖矿
广告刷流量
针对web服务
劫持后台(常见)
篡改页面
传播蠕虫
内网扫描(常见)

(4)XSS类型

反射型:

反射型也称为非持久型,这种类型的脚本是最常见的,也是使用最为广泛的一种,主要用于将恶意的脚本附加到URL地址的参数中。

存储型:

攻击者将已经构造完成的恶意页面发送给用户,用户访问看似正常的页面后收到攻击,这类XSS通常无法直接在URL中看到恶意代码,具有较强的持久性和隐蔽性。

DOM

DOM型XSS无需和后端交互,而是基于JavaScript上,JS解析URL中恶意参数导致执行JS代码

2.XSS分类详解

(1)存储型XSS

存储型XSS:持久性,代码是存储在web服务器中的,比如在个人信息或发表文章等地方插入代码,如果没有过滤或者过滤不严,那么这些代码将存储在服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫、盗窃cookie。每一个访问特定页面的用户,都会受到攻击。

特点:

XSS攻击代码存储于web server上;
攻击者一般是通过网站的留言、评论、博客、日志等功能(所有能够向web server输入内容的地方),将攻击代码存储到web server上的
存储型XSS攻击流程:

image.png

(2)反射型XSS

反射型跨站脚本也称作非持久型、参数型跨站脚本、这类型的脚本是最常见的 ,也是使用最为广泛的一种,主要用于将恶意的脚本附加到URL地址的参数中

  http://www.test.com/search.php?key="><script>alert("xss")</script>

一般使用的将构造好的URL发给受害者,是受害者点击触发,而且只执行一次,非持久化。

反射型XSS攻击流程:

image.png

反射型XSS-DVWA:
  Payload:
  Low:<script>alert(1)</script>
  Mid:<SCRIPT>alert(1)</SCRIPT>
  High:<img  src=1  οnerrοr=alert(1)>

(3)JS简介

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。
为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于ECMA标准,因此也称为ECMAScript。

3.XSS发现与防护

(1)XSS的五种防御方式

HTML节点内容的XSS防御

转义掉<<和>>即转义掉<>即可,转义的时候有两种,一种是写入数据库的时候进行转义,另一种是在解析的时候转义
这里是在显示的时候转义

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

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

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

escapeHtmlProperty(content);

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

HTML转义函数
var escapeHtmlProperty = function(str){
    if(!str) return '';
    str = str.replace(/&/g,'&amp;');
    str = str.replace(/>/g,'&lt;');
    str = str.replace(/>/g,'&gt;');
    str = str.replace(/"/g,'&quto;');
    str = str.replace(/'/g,'&#39;');
    return str;
}
escapeHtml(content);

js转义

转义掉""或者替换成json

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

富文本

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

npm install xss

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

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

(2)XSS蠕虫攻击

XSS蠕虫的破坏力和影响力都是巨大的。XSS蠕虫主要发生在用户之间存在交互行为的页面中,当Web应用程序对用户输入的数据信息没有做严格的过滤时,通过结合Ajax的异步提交,就可以实现在植入恶意代码的同时,将恶意代码进行对外发送,即实现了代码的感染和传播,也就形成了XSS蠕虫。

(3)挖掘XSS漏洞

扫描工具自动化检测
AWVS
AppScan
JSKy
手工测试
源码分析

(4)XSS漏洞的防范

XSS跨站脚本攻击漏洞防范

客户端用户

IE8及高级版本,开启XSS筛选器功能
Firefox使用CSP、Noscript等扩展功能
瑞星个人防火墙2012版本开启XSS拦截功能

Web应用程序员

使用HttpOnly
完善的输入、输出检查

HttpOnly

HttpOnly最初是由微软提出的,目前已经被多款流行浏览器厂商所采用。HttpOnly的作用不是过滤XSS跨站脚本攻击,而是浏览器将禁止页面的Javascript访问带有HttpOnly属性的Cookie,解决XSS跨站脚本攻击后的Cookie会话劫持行为。

输入、输出检查

由于三种XSS跨站脚本攻击类型的漏洞成因可不相同,针对输入输出的检查一部分适用于反射型XSS与存储型XSS,而另外一些检查适用于基于DOM的XSS
在大多数的时候都是对可信字符的检查或输入数据格式的检查,如用户输入的注册账号信息中只允许包括字母、数字、下划线和汉字等,对于输入的一切非白名单内的字符均认为是非法输入。数据格式如IP地址、电话号码、邮件地址、日期等数据都具有一定的格式规范,只有符合数据规范的输入信息才允许通过检查。
输出检查主要是针对数据展示过程,应该对数据的信息进行HTML编码处理,将可能存在导致XSS跨站脚本攻击的恶意字符进行编码,在不影响正常数据显示的前提条件下,过滤恶意字符。
常见的可能造成的XSS跨站脚本攻击的字符及其HTML编码如:

  "  ---  &quot;
  '  ---  &apos;
  &  ---  &amp;
  <  ---  &It;
  >  ---  &gt;

除了常用的编码外,任何字符都可以使用其ASCII码进行HTML编码,如:

  %  ---  &#37;
  *  ---  &#42;

DOM Based XSS输入、输出检查
- 特殊性
  - 基于DOM的XSS跨站脚本攻击发生时,恶意数据的格式与传统的XSS跨站脚本攻击数据格式有一定的差异,甚至可以在不经过服务器端的处理和响应的情况下,直接对客户端实施攻击行为。
- 输入检查
  - 在客户端部署相应的安全检测代码的过滤效果要比在服务器端检测的效果更加明显。
  - 客户端检测代码来保证用户输入的数据只包含字母、数字和空格。
  - 服务端实现上述数据检查的功能
    - URL参数名称、个数检测
    - 参数值类型及内容检测
- 输出检查
  - 在将用户可控的DOM数据内容插入到文档之前,Web应用程序应对提交的数据中可能存在的各种危险字符和表达式进行过滤以安全的方式插入到文档中进行展现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/259198.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华清远见作业第十三天

1.使用多文件编辑&#xff0c; 定义商品信息:商品名称&#xff0c;商品单价&#xff0c;商品购买个数&#xff0c;商品描述&#xff0c;循环输入购买的商品&#xff0c;按单价排序&#xff0c;输出商品信息&#xff0c;计算最贵的商品以及一共花了多少钱? 在create函数&#x…

Python PyCaret:自动化机器学习的利器

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在这篇文章中&#xff0c;将深入介绍 Python 中强大的机器学习库 PyCaret。PyCaret 是一个自动化机器学习工具&#xff0c;旨在简化从数据预处理到模型部署的整个机器学习流程。通过 PyCaret&#xff0c;你可以以…

百度旋转验证码识别(最新)

最近研究了一下图像识别&#xff0c;一直找到很好的应用场景&#xff0c;今天我就发现可以用百度的旋转验证码来做一个实验。没想到效果还挺好&#xff0c;下面就是实际的识别效果。 1、效果演示 2、如何识别 2.1准备数据集 首先需要使用爬虫&#xff0c;对验证码图片进行采…

随时爆雷!2023年四大“安全债”

即将过去的2023年&#xff0c;网络安全、云安全、应用安全、数据安全领域暴露的诸多“安全债”中&#xff0c;有四大债务不但未能充分缓解&#xff0c;反而有在新的一年“爆雷”的风险。这四大债务分别是&#xff1a;Logj4漏洞、HTTP/2快速重置攻击漏洞、恶意电子邮件和后量子加…

《每天一分钟学习C语言·三》

1、 scanf的返回值由后面的参数决定scanf(“%d%d”,& a, &b); 如果a和b都被成功读入&#xff0c;那么scanf的返回值就是2如果只有a被成功读入&#xff0c;返回值为1如果a和b都未被成功读入&#xff0c;返回值为0 如果遇到错误或遇到end of file&#xff0c;返回值为EOF…

Ansible常用模块详解(附各模块应用实例和Ansible环境安装部署)

目录 一、ansible概述 1、简介 2、Ansible主要功能&#xff1a; 3、Ansible的另一个特点&#xff1a;所有模块都是幂等性 4、Ansible的优点&#xff1a; 5、Ansible的四大组件&#xff1a; 二、ansible环境部署&#xff1a; 1、环境&#xff1a; 2、安装ansible&#…

web前端游戏项目-雷霆战机飞机大战游戏【附源码】

文章目录 一&#xff1a;雷霆战机HTML源码&#xff1a;JS文件&#xff1a;&#xff08;1&#xff09;function.js&#xff08;2&#xff09;impact.js&#xff08;3&#xff09;move.1.1.js&#xff08;4&#xff09;script.js 二&#xff1a;飞机大战HTML源码&#xff1a;CSS源…

短视频时代,又恰逢双旦来临之际,普通人又该如何立足?

我是电商珠珠 在电商发展迅速的同时&#xff0c;短视频也在同步发展。国内的短视频比较热门的有抖音、视频号、快手这几个。 抖音在19年的时候发展起了自己的电商行业-抖音小店&#xff0c;并顺势掀起了直播电商的热潮。 直播电商在短视频中很火&#xff0c;所以很多人都选择…

电源模块测试方法 | 怎么测试电源负载瞬态响应?

负载瞬态响应测试是检测电源稳定性和质量的重要方法之一&#xff0c;而电源稳定性是设备正常运行的基础。通过负载瞬态响应测试来检测电源的响应速度和稳定性&#xff0c;从而优化电源设计&#xff0c;提升性能&#xff0c;确保电子设备可以稳定工作。 什么是负载瞬态响应测试?…

技术博客:市面上加密混淆软件的比较和推荐

引言 市面上有许多加密混淆软件可供开发者使用&#xff0c;但哪些软件是最好用的&#xff1f;哪些软件受到开发者的喜爱&#xff1f;本文将根据一次在CSDN上的投票结果&#xff0c;为大家介绍几款在程序员中普及度较高的加密软件。以下是投票结果&#xff0c;希望能对大家的选…

如何进一步优化Ubuntu服务器的性能

导读&#xff1a; 要进一步优化Ubuntu服务器的性能&#xff0c;您可以考虑以下几个方面&#xff1a;优化软件包管理&#xff1a; Ubuntu使用APT&#xff08;Advanced Package Tool&#xff09;作为其软件包管理工具。为了提高性能&#xff0c;您可以采取以下措施 要进一步优化U…

鸿蒙ArkTS语言介绍与TS基础法

1、ArkTS介绍 ArkTS是HarmonyOS主力应用开发语言&#xff0c;它在TS基础上&#xff0c;匹配ArkUI框架&#xff0c;扩展了声明式UI、状态管理等响应的能力&#xff0c;让开发者以更简洁、更自然的方式开发跨端应用。 JS 是一种属于网络的高级脚本语言&#xff0c;已经被广泛用…

纵横字谜的答案 Crossword Answers

纵横字谜的答案 Crossword Answers - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 翻译后大概是&#xff1a; 有一个 r 行 c 列 (1<r,c<10) 的网格&#xff0c;黑格为 * &#xff0c;每个白格都填有一个字母。如果一个白格的左边相邻位置或者上边相邻位置没有白格&…

一文读懂光量子技术

量子力学理论是在二十世纪初提出的&#xff0c;目的是为了更好地解释原子发出的光的光谱。当时&#xff0c;许多人认为物理学几乎已被完全理解&#xff0c;只剩下一些异常现象有待“解决”。 量子力学完整理论的出现完全出乎人们的意料&#xff1a;它从根本上描述了自然界。它描…

python+torch线性回归模型机器学习

程序示例精选 pythontorch线性回归模型机器学习 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《pythontorch线性回归模型机器学习》编写代码&#xff0c;代码整洁&#xff0c;规则&#xf…

[CVPR-23] PointAvatar: Deformable Point-based Head Avatars from Videos

[paper | code | proj] 本文的形变方法被成为&#xff1a;Forward DeformationPointAvatar基于点云表征动态场景。目标是根据给定的一段单目相机视频&#xff0c;重建目标的数字人&#xff0c;并且数字人可驱动&#xff1b;通过标定空间&#xff08;canonical space&#xff09…

域架构下的功能安全思考

来源&#xff1a;联合电子 随着整车电子电气架构的发展&#xff0c;功能域控架构向整车集中式区域控制演进。新的区域控制架构下&#xff0c;车身控制模块(BCM)&#xff0c;整车控制单元&#xff08;VCU&#xff09;&#xff0c;热管理系统&#xff08;TMS&#xff09;和动力底…

机器学习笔记:支持向量机回归SVR

1 主要思想 主要思路类似于机器学习笔记&#xff1a;支持向量机SVM_支撑向量学习-CSDN博客 和SVM的区别主要有 解法和SVM区别不大&#xff0c;也是KKT 2 和线性回归的区别 对SVR&#xff0c;如果f(x)和y之间的差距小于阈值ε【也即落在两条间隔带之间】&#xff0c;则不计算…

Text2SQL学习整理(三)SQLNet与TypeSQL模型

导语 上篇博客&#xff1a;Text2SQL学习整理&#xff08;二&#xff09;&#xff1a;WikiSQL数据集介绍简要介绍了WikiSQL数据集的一些统计特性和数据集特点&#xff0c;同时简要概括了该数据集上一个baseline&#xff1a;seq2sql模型。本文将介绍seq2SQL模型后一个比较知名的…

盲盒电商:万物皆可盲盒

随着社会的进步和消费观念的改变&#xff0c;盲盒已经成为了年轻人喜爱的消费方式之一。从玩具、文具到美妆、服饰&#xff0c;甚至是旅行、餐饮等领域&#xff0c;盲盒的形态和内容也在不断变化和丰富。今天&#xff0c;我们就来聊聊这个充满惊喜和未知的盲盒世界。 一、盲盒的…