xss跨站脚本(cross-site scripting)

embedded/2024/9/25 8:28:25/
本质上是用户输入 js html 代码,提交至服务器(可不经过),前端和后端均未对用户的输入和输出进
行合理的过滤和限制,导致恶意 js 代码以及 html 代码被注入到网页中
危害:钓鱼欺骗、获取会话、会话劫持、网页蠕虫病毒等;
前端代码注入,代码注入类
代码注入的本质:把用户的输入当作代码执行;
基本流程
如何引用 js
1 script 标签
< script > console . log () < /script>
2 script 标签中的 src 属性
< script src = "http://a.com/j.js" >< /script>
3 、事件( on ),(鼠标键盘窗口)
< input onclick = console . log () >
< img src = x onerror = console . log () >
4 a 标签 href 属性构造伪协议
< a href = javascript : console . log () > baidu < /a>
常见构造标签:
<script>alert(1)</script>
<img src = x onerror = alert(1)>
<svg onload = alert(1)>
<input onmouseover = "console.log(5)" >
<a href = "javascript:alert(1)" >
<input type = text onclick = alert(1)>
等等
xss 分类
1 、反射型
xss 恶意代码经过服务器但不存储于服务器,一次性
2 、存储型
xss 恶意代码经过服务器且存储于服务器(文件,数据库)
3 dom 型(也算反射型的一种)
xss 恶意代码不经过服务器,无需和服务器交互,发生在客户端处理数据时
xss 语句及过滤
1 、无尖括号,可选择用事件触发 js 代码
2 、无法使用 script 标签及 js 事件的情况下,可选择用 a 标签引入伪协议,例:
<a href = "javascript:alert(1)" > random </a>
3 、某些属性被替换,可选择大小写绕过限制
例:
"> <a hREf = "javascript:alert(1)" > asdf </a>
用大小写穿插的方式替换 href
4 、存在过滤属性名、标签名的情况,如果过滤不严谨可尝试双写;
"> <a hrhrefef = "javascrscriptipt:alert(1)" > asdf </a>
5 、可尝试使用实体编码替换 xss 语句中值的部分,
例:
<a href = "javascript:alert(1)" > 友情链接 </a>
可替换 href 后的部分,参数无法替换
6 、观察页面,有些输入框是隐藏属性
7 、除了正常的 GET POST 请求外, http 请求头,有时也可以构造 xss
8 ng-include, ①需要指定的是同域名下的图片或文件②搭配事件或其他 js 触发方式
9 、空格被替换,可选择类似 sql 注入中的替换方法, %0a %0d %09 /
10 、反单引号替换括号、中括号
11 img input 等自闭和标签无需闭合,结尾尖括号也可省略,属性后记得加空格
12 、引入恶意 js 时,可选用邮箱格式,用户名 @ 网址,例: baidu.com@qq.com , 等价于baidu.co 作为用户名去访问qq
13 、正则不严谨时可使用空格绕过正则
14 svg 标签中可解析实体编码
15 、标签内增加空白符,不影响标签原有意义

http://www.ppmy.cn/embedded/14133.html

相关文章

Transformer中的位置编码详解

什么是位置编码 位置编码概述 位置编码的目的是为了补充序列的位置信息&#xff0c;这是因为自注意力机制本身不包含位置的概念&#xff08;例如顺序信息&#xff09;。位置编码的具体作用是&#xff0c;对于不同的输入序列成分&#xff0c;赋予其不同的位置标识&#xff0c;确…

C++中输入输出速度的优化

ios::sync_with_stdio(false);cin.tie(NULL);这两行代码是用于控制 C 输入输出流的同步和缓冲行为的。 1. ios::sync_with_stdio(false); 默认情况下&#xff0c;C 的输入输出流与 C 标准库的输入输出流是同步的&#xff0c;这意味着 C 的输入输出流在每次操作后会调用 C 标准…

设计模式:解释器模式

定义 解释器模式&#xff08;Interpreter Pattern&#xff09;是一种行为型设计模式&#xff0c;它给定一个语言&#xff0c;定义它的文法的一种表示&#xff0c;并定义一个解释器&#xff0c;这个解释器使用该表示来解释语言中的句子。简单来说&#xff0c;它主要用于某些特定…

如何在 C# 中选择使用抽象类或接口?

概述&#xff1a;在错综复杂的 C# 编程领域中&#xff0c;在抽象类和接口之间做出选择的决定是一个微妙的过程&#xff0c;它塑造了软件的结构和行为。当开发人员努力设计健壮且可维护的系统时&#xff0c;问题出现了&#xff1a;如何在 C# 中选择抽象类或接口&#xff1f;这个…

3、MATLAB中矩阵和多维矩阵介绍

文章目录 一、矩阵二、矩阵举例三、定义变量四、定义矩阵五、获取变量值 一、矩阵 MATLAB中数据的基本格式是矩阵&#xff1b; 二维矩阵是一个带有以行和列排列的元素的矩阵表&#xff1b;如果右m行、n列&#xff0c;这个矩阵的大小就是m x n&#xff1b;多维矩阵的维数大于2…

深度剖析Gateway在微服务治理中的关键角色

目录 一、多层网关 二、Gateway 路由规则 2.1 路由 2.2 谓词 2.3 过滤器 三、路由声明规则 3.1 谓词 寻址谓词 请求参数谓词 时间谓词 自定义谓词 一、多层网关 首先我们先了解下一个请求是如何到达服务端并得到相应的。过程如图所示&#xff1a; 首先网址解析的第一步是 DN…

xgp用什么加速器 xgp加速器免费推荐

xgp用什么加速器 xgp加速器免费推荐 Xgp是xbox游戏平台。Xgp是类似于steam、epic等&#xff0c;拥有丰富游戏资源的平台。该平台的全称为“XBox Game Pass”&#xff0c;俗称为“西瓜皮”。对于首次登录的账户更有14天的免费体验时间&#xff0c;这无疑为游戏爱好者们提供了一…

【紫光同创盘古PGX-Lite 7K教程】——(盘古PGX-Lite 7K开发板/PGC7KD-6IMBG256第七章)数字钟实验例程

本原创教程由深圳市小眼睛科技有限公司创作&#xff0c;版权归本公司所有&#xff0c;如需转载&#xff0c;需授权并注明出处&#xff08;www.meyesemi.com) 适用于板卡型号&#xff1a; 紫光同创PGC7KD-6IMBG256开发平台&#xff08;盘古PGX-Lite 7K&#xff09; 仅需一根Ty…