XSS 攻击(详细)

news2025/4/3 22:49:05

目录

引言

一、XSS 攻击简介

二、XSS 攻击类型

1.反射型 XSS

2.存储型 XSS

3.基于 DOM 的 XSS

4.Self - XSS

三、XSS 攻击技巧

1.基本变形

2.事件处理程序

3.JS 伪协议

4.编码绕过

5.绕过长度限制

6.使用标签

四、XSS 攻击工具与平台

1.XSS 攻击平台

2.BEEF

五、XSS 相关案例 - XSS 蠕虫

六、XSS 防御方法

1.输入输出过滤

2.HttpOnly Cookie

3.内容安全策略(CSP)

4.验证输入数据类型和格式

5.JavaScript 框架与 XSS

5.1-jQuery

5.2-Vue.js

5.3-AngularJS

6.富文本与安全问题

6.1-富文本的风险

6.2-处理方法

7.旧版浏览器的安全隐患

小结


引言

在当今数字化时代,网络应用与人们的生活、工作深度融合,Web安全的重要性愈发凸显。XSS攻击,作为Web安全领域中极为常见且危害巨大的漏洞类型,正悄然威胁着每一位网络用户和网站运营者。你是否曾想过,当你在浏览网页、登录账户、输入信息时,背后可能隐藏着怎样的风险?看似平常的操作,或许正被恶意攻击者利用XSS漏洞窥探隐私、窃取数据。从电商平台用户账号被盗刷,到社交网站个人信息泄露,XSS攻击的阴影无处不在。本文将带你深入了解XSS攻击的方方面面,从攻击类型、技巧,到实际案例和防御方法,为你揭开这一网络安全威胁的神秘面纱,帮助你筑牢网络安全防线。

一、XSS 攻击简介

XSS,即跨站脚本攻击,是 Web 安全领域中十分常见的漏洞类型。攻击者通过在 Web 页面中注入恶意脚本,当用户浏览该页面时,恶意脚本便会在用户的浏览器中执行。借助这种攻击方式,攻击者能够窃取用户的敏感信息,如登录凭证、个人隐私数据等;劫持用户会话,以用户身份进行各种操作;甚至篡改网站内容,严重损害网站的声誉和用户信任。举例来说,某电商网站若存在 XSS 漏洞,攻击者可通过注入恶意脚本,窃取用户的账号密码,进而盗刷用户的账户资金,给用户带来直接的经济损失。

二、XSS 攻击类型

1.反射型 XSS

反射型 XSS 攻击的脚本通常存在于 URL 中,服务器在接收到请求后,会直接将包含恶意脚本的内容返回给浏览器执行。这种攻击属于非持久性攻击,一般是攻击者通过诱骗用户点击包含恶意脚本的链接来实施攻击。例如,攻击者构造链接 “http://example.com/search?query=alert('XSS')”,当用户点击该链接时,服务器将恶意脚本反射回浏览器,进而执行弹窗操作。下面是一个简单的 Python Flask 示例,展示反射型 XSS 漏洞:

from flask import Flask, request

app = Flask(__name__)

@app.route('/search')

def search():

    query = request.args.get('query')

    return f'<html><body>{query}</body></html>'

if __name__ == '__main__':

app.run(debug=True)

2.存储型 XSS

存储型 XSS 攻击会将恶意脚本存储在服务器端,比如数据库中。当其他用户访问包含该恶意脚本的页面时,脚本就会被加载并执行,这是一种持久性攻击,危害较大。以留言板功能为例,攻击者在留言内容中插入恶意脚本,如 “alert('Stored XSS')”,后续访问留言板的用户都会触发该脚本。以下是 PHP 实现的存在存储型 XSS 漏洞的留言板代码:

<?php

$conn = mysqli_connect("localhost", "root", "", "testdb");

if (isset($_POST['message'])) {

$message = $_POST['message'];

$sql = "INSERT INTO messages (content) VALUES ('$message')";

mysqli_query($conn, $sql);

}

$sql = "SELECT * FROM messages";

$result = mysqli_query($conn, $sql);

while ($row = mysqli_fetch_assoc($result)) {

echo $row['content'];

}

mysqli_close($conn);

?>

3.基于 DOM 的 XSS

基于 DOM 的 XSS 攻击通过修改页面的 DOM 结构来注入恶意脚本,它是从客户端的 JavaScript 代码中执行的,与服务器交互数据没有直接关联。攻击者利用 JavaScript 中对 DOM 对象操作的函数,当这些函数的参数受用户输入影响且未经过严格安全处理时,就可能引发漏洞。比如,当页面中有代码 “document.getElementById ('target').innerHTML = userInput;”,若 userInput 被攻击者控制并输入恶意脚本 “alert('XSS')”,页面在执行这段代码时就会弹出警告框,实现 XSS 攻击。下面是一个 HTML 和 JavaScript 示例:

<!DOCTYPE html>

<html>

<head>

<title>DOM - XSS Example</title>

</head>

<body>

<input type="text" id="input" />

<button onclick="updateContent()">Submit</button>

<div id="target"></div>

<script>

function updateContent() {

var input = document.getElementById('input').value;

document.getElementById('target').innerHTML = input;

}

</script>

</body>

</html>

4.Self - XSS

Self - XSS 是指用户自己将恶意脚本输入到应用程序中,通常是由于用户自身安全意识不足导致的,并非攻击者直接注入。例如,用户为了实现某些特定效果,在应用允许的输入框中输入恶意脚本,从而触发 XSS 攻击。

三、XSS 攻击技巧

1.基本变形

攻击者会对恶意脚本进行编码变形,如使用 Unicode 编码或特殊字符,以绕过安全过滤机制。例如,将 “alert('XSS')” 编码为 “<script>alert ('XSS')</script>”,部分仅检测明文恶意代码的过滤系统可能无法识别。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>基本变形 XSS 示例</title>
</head>

<body>
    <!-- 正常的恶意脚本 -->
    <script>alert('XSS')</script>
    <!-- 经过 Unicode 编码变形后的脚本 -->
    <script>
        // 将 Unicode 编码的脚本进行解码并执行
        const encodedScript = '\u003c\u0073\u0063\u0072\u0069\u0070\u0074\u003e\u0061\u006c\u0065\u0072\u0074\u0028\u0027\u0058\u0053\u0053\u0027\u0029\u003c\u002f\u0073\u0063\u0072\u0069\u0070\u0074\u003e';
        const decodedScript = unescape(encodedScript.replace(/\\u/g, '%u'));
        const scriptElement = document.createElement('script');
        scriptElement.innerHTML = decodedScript;
        document.body.appendChild(scriptElement);
    </script>
</body>

</html>

2.事件处理程序

利用 HTML 元素的 onclick、onmouseover 等事件属性,当用户触发相应事件时,执行恶意代码。例如,在 “” 中,当图片无法加载时,就会触发 onerror 事件,执行恶意脚本。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>事件处理程序 XSS 示例</title>
</head>

<body>
    <!-- 当图片无法加载时,触发 onerror 事件执行恶意脚本 -->
    <img src="nonexistent.jpg" onerror="alert('XSS')">
    <!-- 鼠标悬停时触发 onmouseover 事件执行恶意脚本 -->
    <div onmouseover="alert('XSS')">鼠标悬停此处</div>
</body>

</html>

3.JS 伪协议

通过 “javascript:” 伪协议在 URL 中嵌入 JavaScript 代码,当用户点击链接时,恶意脚本就会执行。例如,链接 “Click me”,用户点击后会弹出警告框。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS 伪协议 XSS 示例</title>
</head>

<body>
    <!-- 点击链接执行 JavaScript 代码 -->
    <a href="javascript:alert('XSS')">Click me</a>
</body>

</html>

4.编码绕过

将恶意脚本进行 Unicode 编码、HTML 实体编码等,绕过只检测明文恶意代码的过滤系统,在浏览器解析时还原执行。如将 “<” 编码为 “<”,“>” 编码为 “>”。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>编码绕过 XSS 示例</title>
</head>

<body>
    <!-- 经过 HTML 实体编码的脚本 -->
    <script>
        const encoded = '&lt;script&gt;alert(\'XSS\')&lt;/script&gt;';
        const decoded = document.createElement('div');
        decoded.innerHTML = encoded;
        const script = decoded.firstChild;
        document.body.appendChild(script);
    </script>
</body>

</html>

5.绕过长度限制

攻击者会把长 Payload 分割成短片段,在页面中进行拼接;或者利用 window.name 属性跨页面传递长 Payload。例如,将恶意脚本拆分成多个部分,通过多个 JavaScript 变量存储,再进行拼接执行。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>绕过长度限制 XSS 示例</title>
</head>

<body>
    <script>
        // 长 Payload 分割成短片段
        const part1 = 'alert(';
        const part2 = '\'XSS\'';
        const part3 = ');';
        const fullPayload = part1 + part2 + part3;
        const scriptElement = document.createElement('script');
        scriptElement.innerHTML = fullPayload;
        document.body.appendChild(scriptElement);

        // 利用 window.name 属性跨页面传递长 Payload
        // 页面 1:设置 window.name
        // window.name = 'alert(\'XSS from window.name\');';
        // 页面 2:获取并执行 window.name 中的 Payload
        const payloadFromWindowName = window.name;
        const scriptFromWindowName = document.createElement('script');
        scriptFromWindowName.innerHTML = payloadFromWindowName;
        document.body.appendChild(scriptFromWindowName);
    </script>
</body>

</html>

6.使用标签

在 XSS 攻击中,攻击者常常巧妙利用各种 HTML 标签来达成恶意目的。许多 HTML 标签本身具备特殊功能,若被攻击者利用,就能注入恶意脚本,进而在用户浏览器中执行。

<iframe>标签可用于在当前页面嵌入其他网页内容。攻击者会精心构造恶意链接,当用户点击后,页面会嵌入包含恶意脚本的网页。比如:

<iframe src="http://恶意网站.com/恶意脚本页面.html"></iframe>

在此示例里,恶意网站的页面可能含有窃取用户信息的脚本,一旦用户加载了包含此<iframe>的页面,恶意脚本便会在用户浏览器中执行。

<object>标签主要用于在 HTML 页面中嵌入外部对象,像 Flash 文件、PDF 文件等。攻击者会制作带有恶意脚本的特殊文件,借助<object>标签嵌入到目标页面。例如:

<object data="恶意文件.swf" type="application/x-shockwave-flash"></object>

倘若这个恶意文件.swf文件中藏有恶意脚本,当用户访问包含该<object>标签的页面时,恶意脚本就会被触发执行。

<embed>标签同样能嵌入外部内容,常被用于嵌入多媒体文件、插件等。攻击者会利用它来嵌入恶意的多媒体文件,这些文件可能在播放或加载过程中执行恶意脚本。示例如下:

<embed src="恶意音频.mp3" type="audio/mpeg">

尽管 MP3 音频文件通常用于音频播放,但如果攻击者对其进行特殊处理,在文件中隐藏恶意脚本代码,当用户的浏览器尝试加载并解析这个音频文件时,恶意脚本就可能会被执行。

通过利用这些标签,攻击者增加了 XSS 攻击的多样性和隐蔽性,使得检测和防范工作变得更加困难。因此,开发者在处理用户输入和嵌入外部内容时,必须格外谨慎,进行严格的输入验证和安全检查,以防止被此类攻击手段利用。

四、XSS 攻击工具与平台

1.XSS 攻击平台

研究人员将多种功能封装到 XSS 攻击平台中,这些平台具备获取浏览器和计算机信息、钓鱼攻击等功能。攻击者可以通过这些平台更高效地实施 XSS 攻击,并收集攻击成果。

2.BEEF

BEEF 是一款强大的 XSS 攻击辅助平台,它能够与浏览器进行交互,注入脚本获取敏感数据,控制浏览器操作。BEEF 内置 Web 界面,方便攻击者进行操作和管理。

五、XSS 相关案例 - XSS 蠕虫

以 Samy 蠕虫为例,其利用 MySpace 网站的 XSS 漏洞进行传播,在短时间内造成了广泛的影响。Samy 蠕虫通过在用户的个人资料页面中注入恶意脚本,当其他用户访问该页面时,脚本会自动将蠕虫代码复制到他们的个人资料页面,从而实现快速传播。

六、XSS 防御方法

1.输入输出过滤

对用户输入数据进行严格过滤,转义或去除特殊字符,防止恶意脚本注入。同时,对输出数据也进行检查和转义,确保不会在页面中执行恶意脚本。在 Python 中,可以使用正则表达式过滤恶意脚本,示例如下:

import re

def filter_xss(input_str):

return re.sub(r'<script.*?>.*?</script>', '', input_str, flags=re.DOTALL)

2.HttpOnly Cookie

设置 Cookie 的 HttpOnly 属性,使 JavaScript 无法访问该 Cookie,防止 Cookie 被窃取,降低会话劫持的风险。在 PHP 中,可以使用 setcookie 函数设置 HttpOnly 属性:

setcookie("session_id", "123456", time() + 3600, "/", "example.com", false, true);

3.内容安全策略(CSP)

配置 CSP 策略限制页面加载资源的来源,阻止恶意脚本的执行。可以通过 HTTP 响应头 “Content-Security-Policy” 或 HTML 的 “” 标签来设置。例如,设置 “Content-Security-Policy: script-src'self'”,表示只允许从当前域名加载脚本。

4.验证输入数据类型和格式

确保用户输入的数据符合预期的类型和格式,防止攻击者利用非预期的数据格式进行攻击。例如,对于一个要求输入数字的字段,使用 JavaScript 进行验证:

function validateNumber(input) {

return!isNaN(parseFloat(input)) && isFinite(input);

}

5.JavaScript 框架与 XSS

5.1-jQuery

jQuery 是广泛使用的 JavaScript 框架,本身设计较为安全。但在实际应用中,若开发人员使用不当,如在使用 html ()、text () 等方法将用户输入内容插入到 DOM 中时,未对输入进行安全过滤,就可能引入 XSS 漏洞。例如:

$(document).ready(function() {

$('.element').html(userInput);

});
5.2-Vue.js

Vue.js 通过数据绑定和组件化开发提高了开发效率。但在数据绑定过程中,如果不对用户输入的数据进行安全处理,也可能导致 XSS。例如,在模板中直接使用未过滤的用户数据:

<template>

<div>{{ userData }}</div>

</template>
5.3-AngularJS

AngularJS 以强大的双向数据绑定和依赖注入等功能著称。但在处理用户输入和动态生成 HTML 内容时,如果缺乏安全验证,容易产生 XSS 漏洞。例如,在使用 ng-bind-html 指令绑定 HTML 内容时:

<div ng-bind-html="htmlContent"></div>

6.富文本与安全问题

6.1-富文本的风险

富文本内容通常包含 HTML 标签和可能的 JavaScript 代码,具有较高的安全风险。如果对富文本内容处理不当,攻击者可以在其中插入恶意脚本,当其他用户浏览这些内容时,脚本就会被执行,从而导致 XSS 攻击。

6.2-处理方法

可以使用安全的富文本编辑器,这些编辑器会对用户输入的内容进行过滤和净化,只允许特定的、安全的 HTML 标签和属性存在,去除可能包含恶意脚本的代码。另外,对富文本内容进行输出转义也是必要的,确保在展示时不会执行潜在的恶意脚本。

7.旧版浏览器的安全隐患

旧版本的 IE 浏览器存在一些安全缺陷,例如在处理 “Content-Type” 头信息时可能出现误判,将本应作为普通文本处理的内容错误地解析为脚本并执行,这就为 XSS 攻击提供了可乘之机。此外,旧版浏览器对一些安全特性的支持不完善,相比新版本浏览器,更容易受到 XSS 等攻击的影响。因此,建议用户及时升级浏览器版本,开发者在开发过程中,若需要支持旧版浏览器,要格外注意采取额外的安全防护措施。

小结

跨站脚本攻击(XSS)严重威胁着 Web 应用的安全,攻击者借助多种类型的 XSS 攻击和丰富的攻击技巧,试图窃取用户信息、劫持会话,对用户和网站造成极大危害。为了有效防范 XSS 攻击,我们需要从多个层面入手。

编码阶段,对用户输入和输出进行严格的过滤和转义,验证数据类型和格式;在部署阶段,合理配置 HttpOnly Cookie 和内容安全策略(CSP),借助 XSS Filter 等工具进行防护;在使用 JavaScript 框架时,遵循安全规范,防止因框架使用不当引入漏洞;对于富文本内容,采用安全的编辑器并进行输出转义。同时,要关注浏览器的版本更新,及时升级以避免旧版浏览器的安全隐患。只有构建全方位、多层次的安全防护体系,持续提升安全意识,才能有效抵御 XSS 攻击,营造安全可靠的网络环境。

喜欢就点点赞和关注评论一起进步呗

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《ZooKeeper Zab协议深度剖析:构建高可用分布式系统的基石》

《ZooKeeper Zab协议深度剖析:构建高可用分布式系统的基石》 一、分布式协调的挑战与ZooKeeper的解决方案 1.1 分布式系统一致性难题 #mermaid-svg-iigak7YlgEw7o6lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-sv…

OpenCV 图形API(6)将一个矩阵(或图像)与一个标量值相加的函数addC()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 addC 函数将给定的标量值加到给定矩阵的每个元素上。该功能可以用矩阵表达式替换&#xff1a; dst src1 c \texttt{dst} \texttt{src1} \te…

同步SVPWM调制策略的初步学习记录

最近项目需要用到一些同步调制SVPWM相关的内容&#xff08;现在的我基本都是项目驱动了&#xff09;&#xff0c;因此对该内容进行一定的学习。 1 同步SVPWM调制的背景 我们熟知的一些知识是&#xff1a;SVPWM&#xff08;空间矢量脉宽调制&#xff09;是一种用于逆变器的调制…

排序算法3-交换排序

目录 1.常见排序算法 2.排序算法的预定函数 2.1交换函数 2.2测试算法运行时间的函数 2.3已经实现过的排序算法 3.交换排序的实现 3.1冒泡排序 3.2快速排序 3.2.1递归的快速排序 3.2.1.1hoare版本的排序 3.2.1.2挖坑法 3.2.1.3lomuto前后指针法 3.2.2非递归版本的快…

【Qt】数据库管理

数据库查询工具开发学习笔记 一、项目背景与目标 背景&#xff1a;频繁编写数据库查询语句&#xff0c;希望通过工具简化操作&#xff0c;提升效率。 二、总体设计思路 1. 架构设计 MVC模式&#xff1a;通过Qt控件实现视图&#xff08;UI&#xff09;&#xff0c;业务逻辑…

Ant Design Vue 中的table表格高度塌陷,造成行与行不齐的问题

前言&#xff1a; Ant Design Vue: 1.7.2 Vue2 less 问题描述&#xff1a; 在通过下拉框选择之后&#xff0c;在获取接口数据&#xff0c;第一列使用了fixed:left&#xff0c;就碰到了高度塌陷&#xff0c;查看元素的样式结果高度不一致&#xff0c;如&#x…

【qt】文件类(QFile)

很高兴你能看到这篇文章&#xff0c;同时我的语雀文档也更新了许多嵌入式系列的学习笔记希望能帮到你 &#xff1a; https://www.yuque.com/alive-m4b9n 目录 QFile 主要功能QFile 操作步骤QFile 其他常用函数案例分析及实现功能一实现&#xff1a;打开文件并显示功能二实现:另…

3. 实战(一):Spring AI Trae ,助力开发微信小程序

1、前言 前面介绍了Spring boot快速集成Spring AI实现简单的Chat聊天模式。今天立马来实战一番&#xff0c;通过Trae这个火爆全网的工具&#xff0c;来写一个微信小程序。照理说&#xff0c;我们只是极少量的编码应该就可以完成这项工作。开撸~ 2、需求描述 微信小程序实现一…

UE5新材质系统效果Demo展示

1、玉质材质&#xff0c;透明玻璃材质&#xff0c;不同透射和散射。 2、浅水地面&#xff0c;地面层&#xff0c;水层&#xff0c;地面湿度&#xff0c;水面高度&#xff0c;水下扰动&#xff0c;水下浇洒&#xff0c;水下折射 Substrate-Water Substrate-Water-CodeV2

wps 怎么显示隐藏文字

wps 怎么显示隐藏文字 》文件》选项》视图》勾选“隐藏文字” wps怎么设置隐藏文字 wps怎么设置隐藏文字

CXL UIO Direct P2P学习

前言&#xff1a; 在CXL协议中&#xff0c;UIO&#xff08;Unordered Input/Output&#xff09; 是一种支持设备间直接通信&#xff08;Peer-to-Peer, P2P&#xff09;的机制&#xff0c;旨在绕过主机CPU或内存的干预&#xff0c;降低延迟并提升效率。以下是UIO的核心概念及UI…

leetcode138.随即链表的复制

思路源于 【力扣hot100】【LeetCode 138】随机链表的复制&#xff5c;哈希表 采用一个哈希表&#xff0c;键值对为<原链表的结点&#xff0c;新链表的结点>&#xff0c;第一次遍历原链表结点时只创建新链表的结点&#xff0c;第二次遍历原链表结点时&#xff0c;通过键拿…

《网络管理》实践环节01:OpenEuler22.03sp4安装zabbix6.2

兰生幽谷&#xff0c;不为莫服而不芳&#xff1b; 君子行义&#xff0c;不为莫知而止休。 1 环境 openEuler 22.03 LTSsp4PHP 8.0Apache 2Mysql 8.0zabbix6.2.4 表1-1 Zabbix网络规划&#xff08;用你们自己的特征网段规划&#xff09; 主机名 IP 功能 备注 zbx6svr 19…

Opencv计算机视觉编程攻略-第四节 图直方图统计像素

Opencv计算机视觉编程攻略-第四节 图直方图统计像素 1.计算图像直方图2.基于查找表修改图像3.直方图均衡化4.直方图反向投影进行内容查找5.用均值平移法查找目标6.比较直方图搜索相似图像7.用积分图统计图像 1.计算图像直方图 图像统计直方图的概念 图像统计直方图是一种用于描…

深度学习处理时间序列(5)

Keras中的循环层 上面的NumPy简单实现对应一个实际的Keras层—SimpleRNN层。不过&#xff0c;二者有一点小区别&#xff1a;SimpleRNN层能够像其他Keras层一样处理序列批量&#xff0c;而不是像NumPy示例中的那样只能处理单个序列。也就是说&#xff0c;它接收形状为(batch_si…

Mysql 索引性能分析

1.查看CRUD次数 show global status like Com_______&#xff08;7个下划线&#xff09; show global status like Com_______ 2.慢SQL分析 SET GLOBAL slow_query_log ON;-- 设置慢SQL日志记录开启 SET GLOBAL long_query_time 2; -- 设置执行超过 2 秒的查询为慢查询 开…

win11+ubuntu双系统安装

操作步骤&#xff1a; 官网下载ubuntu 最新镜像文件 准备U盘 准备一个容量不小于 8GB 的 U 盘&#xff0c;用于制作系统安装盘。制作过程会格式化 U 盘&#xff0c;请注意提前备份数据。 制作U盘启动盘 使用rufus工具&#xff0c;或者 balenaEtcher工具&#xff08;官网安…

linux-5.10.110内核源码分析 - 写磁盘(从VFS系统调用到I/O调度及AHCI写磁盘)

1、VFS写文件到page缓存(vfs_write) 1.1、写裸盘(dd) 使用如下命令写裸盘&#xff1a; dd if/dev/zero of/dev/sda bs4096 count1 seek1 1.2、系统调用(vfs_write) 系统调用栈如下&#xff1a; 对于调用栈的new_sync_write函数&#xff0c;buf为写磁盘的内容的内存地址&…

arinc818 fpga单色图像传输ip

arinc818协议支持的常用线速率如下图 随着图像分辨率的提高&#xff0c;单lane的速率无法满足特定需求&#xff0c;一种方式是通过多个LANE交叉的去传输图像&#xff0c;另外一种是通过降低图像的带宽&#xff0c;即通过只传单色图像达到对应的效果 程序架构如下图所示&#x…

业务流程先导及流程图回顾

一、测试流程回顾 &#xfeff; 1. 备测内容回顾 &#xfeff; 备测内容: 本次测试涵盖买家和卖家的多个业务流程&#xff0c;包括下单流程、发货流程、搜索退货退款、支付抢购、换货流程、个人中心优惠券等。 2. 先测业务强调 &#xfeff; 1&#xff09;测试业务流程 …