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

CA 机构如何防止中间人攻击

在现代互联网中,中间人攻击(Man-in-the-Middle Attack,简称 MITM)是一种常见的网络攻击方式,攻击者通过拦截和篡改通信双方的信息,进而窃取敏感数据或执行恶意操作。为了防止中间人攻击,证书颁发机构(CA,Certificate Authority) 在公钥基础设施(PKI)中发挥着关键作用。CA 机构通过一系列安全措施,确保公钥的真实性和完整性,从而有效防止中间人攻击。

本文将详细探讨 CA 机构如何防止中间人攻击,并介绍 CA 机制在保障安全通信中的作用。

什么是中间人攻击?

在中间人攻击中,攻击者通过拦截、篡改甚至伪造通信内容,使得通讯双方误以为它们在进行安全的直接通信,而实际上攻击者控制了整个通信过程。比如,攻击者可能伪造服务器的公钥,欺骗客户端使其连接到攻击者的伪装服务器,从而获取用户的敏感信息如密码、账号等。

CA 机构的作用

CA(证书颁发机构)是信任链中的核心部分。其主要功能是验证和颁发 数字证书,并在证书中绑定公钥与身份信息。当用户通过 SSL/TLS 协议建立安全连接时,CA 证书确保了通信双方的公钥是真实且可信的。这种信任机制可以有效防止中间人攻击。

CA 如何防止中间人攻击?主要通过以下几个方面的措施:

1. 证书颁发和验证机制

CA 通过提供数字证书来验证通信双方的身份。数字证书包含公钥、证书持有者的身份信息、有效期以及 CA 的签名等。

  • 数字证书的签发:当网站或服务提供商申请证书时,CA 会对其进行身份验证。通过验证该站点的身份,CA 确保证书不会被伪造,进而保证了通信中的公钥是正确的。只有身份经过验证的服务器才会被签发证书。

  • 证书验证:客户端在连接到一个网站时,会检查该网站的证书是否合法有效。如果证书是由受信任的 CA 签发,并且没有被篡改,客户端就会建立加密连接。如果证书不受信任或被篡改,浏览器会发出警告,提示用户可能遭遇中间人攻击。

2. 使用加密技术保障安全通信

CA 不仅提供了公钥,还通过 SSL/TLS 协议 配合非对称加密和对称加密技术,进一步确保数据的安全性。

  • SSL/TLS 握手协议:当客户端与服务器建立连接时,SSL/TLS 协议会进行一次加密握手。在此过程中,客户端通过 CA 颁发的证书验证服务器的身份。只有当客户端验证了服务器的公钥后,它才会使用该公钥加密数据,并通过加密的通道发送给服务器。这避免了攻击者在此过程中插入恶意代码或篡改信息。

  • 公钥加密与对称加密结合:SSL/TLS 协议在加密通信时,采用非对称加密交换密钥(使用公钥加密)后,再使用对称加密算法进行数据的加密和解密。非对称加密的安全性依赖于密钥的独特性和不可逆性,确保了即使通信被拦截,攻击者也无法破解通信内容。

3. 证书链和根证书的信任机制

证书链是一个信任链条,最终由 根证书(Root Certificate)验证。

  • 根证书:CA 机构会向根证书持有者(通常是受信任的浏览器、操作系统或其他应用程序)提供其根证书。根证书是由权威认证的,能够验证所有子证书的合法性。

  • 证书链的验证:当浏览器收到一个服务器证书时,它会验证这个证书是否由受信任的根证书签发,或者是否通过中间证书链验证了该证书的合法性。如果证书链不完整或存在问题,浏览器会拒绝连接,并警告用户。这样,用户就能避免受到中间人攻击。

4. 防止证书伪造和篡改的技术

为了避免攻击者伪造证书或篡改公钥,CA 采用了多种技术来保障证书的安全性:

  • 数字签名:每个数字证书都由 CA 使用私钥签名,签名内容包括证书的所有关键信息(如公钥、持有者信息等)。任何篡改证书内容的行为都会导致签名无效,从而被客户端识别并拒绝连接。

  • 哈希算法:哈希算法被广泛用于数字签名的生成。通过哈希算法生成证书内容的唯一摘要,并用 CA 的私钥对其进行加密。任何篡改证书内容的行为都会导致哈希值发生变化,进而使得验证失败。

  • 证书吊销列表(CRL)与在线证书状态协议(OCSP):CA 会定期发布 证书吊销列表(CRL),列出所有被吊销的证书。客户端在验证证书时,会检查该证书是否在吊销列表中,防止已经失效的证书被继续使用。此外,OCSP 协议提供了实时查询功能,客户端可以在线查询证书的有效性,进一步防止伪造和篡改证书的情况。

5. 证书钉扎(Certificate Pinning)

证书钉扎是一种增强的安全措施,防止攻击者通过伪造证书进行中间人攻击。证书钉扎指的是将服务器的公钥或证书直接“钉住”,即硬编码到客户端应用中。

  • 工作原理:在应用程序首次与服务器通信时,客户端会记录服务器的证书或公钥。当下次连接时,客户端会检查服务器的证书是否与记录的证书匹配。如果不匹配,则意味着可能遭遇中间人攻击,客户端会拒绝连接。

  • 防止伪造证书:即使攻击者伪造了一个由受信任 CA 签发的证书,若其与钉扎的证书不匹配,客户端仍然能够检测到,并避免受到中间人攻击。

6. 双向认证

双向认证(Mutual Authentication)是进一步增强安全性的措施,在该过程中,客户端和服务器双方都需要提供证书。

  • 客户端证书:除了服务器提供证书外,客户端也需要提供其证书,服务器会验证客户端的证书是否合法。这使得攻击者不仅无法伪造服务器证书,也无法伪造客户端身份。

  • 加强安全性:双向认证增强了身份验证,确保了服务器与客户端之间的每一方都是真实的,避免了中间人攻击的可能性。

总结

CA 机构通过严格的证书验证、数字签名、加密协议、信任链管理等多重技术手段,为互联网通信提供了强大的安全保障。通过 CA 机构的验证机制,客户端可以确保连接的服务器是合法的、可信的,并避免了中间人攻击的风险。

随着互联网安全威胁的不断演化,CA 机构在防止中间人攻击方面的角色也变得更加重要。未来,随着证书管理技术和安全协议的不断发展,CA 机构将继续发挥重要作用,确保我们在互联网世界中的安全通信。

相关文章:

CA 机构如何防止中间人攻击

在现代互联网中,中间人攻击(Man-in-the-Middle Attack,简称 MITM)是一种常见的网络攻击方式,攻击者通过拦截和篡改通信双方的信息,进而窃取敏感数据或执行恶意操作。为了防止中间人攻击,证书颁发…...

CUL-CHMLFRP启动器 windows图形化客户端

CUL-CHMLFRP启动器 windows图形化客户端 基于v2 api开发的chmlfrp ui版本的第三方客户端 CUL原名CHMLFRP_UI CUL顾名思义为CHMLFRP-UI-Launcher 下载地址:https://cul.lanzoul.com/b00pzv3oyj 密码:ff50 下载解压运行即可(仅支持win7以上版本&#xf…...

C语言基础08

内容提要 数组 排序算法:冒泡排序 二维数组 字符数组 数组 冒泡排序 排序思想(向前冒泡) 一次只排好一个数,针对n个数,最差情况需要n-1次就可以排好 每次排序假定第一个元素是最大或者最小,用第一个…...

基于javaweb的SpringBoot儿童爱心管理系统设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...

深度学习:从零开始的DeepSeek-R1-Distill有监督微调训练实战(SFT)

原文链接:从零开始的DeepSeek微调训练实战(SFT) 微调参考示例:由unsloth官方提供https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen2.5_(7B)-Alpaca.ipynbhttps://colab.research.google.com/git…...

JavaScript |(五)DOM简介 | 尚硅谷JavaScript基础实战

学习来源:尚硅谷JavaScript基础&实战丨JS入门到精通全套完整版 笔记来源:在这位大佬的基础上添加了一些东西,欢迎大家支持原创,大佬太棒了:JavaScript |(五)DOM简介 | 尚硅谷JavaScript基础…...

模型整合-cherry studio+mysql_mcp_server服务配置

一、什么是MCP MCP(Model Context Protocol)是模型上下文协议,它允许大型语言模型(LLM)通过协议与外部工具或服务交互,动态获取实时数据或执行操作。简单来说,它让模型不再局限于静态知识库&…...

【QA】装饰模式在Qt中有哪些运用?

在Qt框架中,装饰模式(Decorator Pattern)主要通过继承或组合的方式实现,常见于IO设备扩展和图形渲染增强场景。以下是Qt原生实现的装饰模式典型案例: 一、QIODevice装饰体系(继承方式) 场景 …...

window 设置自动开启/关闭程序(分享)

打开计算机管理 winr 输入 compmgmt.msc 找到任务计划程序创建任务 设置开启任务 常规:添加名称与描述 触发器:新建触发时间与次数 操作:新建执行程序 添加任务对应的位置 以便修改 设置关闭任务 添加批处理文件,写完后吧 .…...

QT布局笔记

在 Qt 中,如果你希望将一个 QGroupBox 放置在水平布局(QHBoxLayout)的上方,可以通过将它们添加到一个垂直布局(QVBoxLayout)中来实现。垂直布局会将子布局或子控件按垂直顺序排列,因此 QGroupBo…...

【LLM大模型】LangChain学习

大模型对话 from langchain.chat_models import ChatOpenAI # 内置对话模型 from langchain.schema import HumanMessage, SystemMessage, AIMessage # 用户提示词,系统提示词, AI响应chat ChatOpenAI(temperature0.7, openai_api_keyxxxxxxxxxxxx) #…...

SpringBoot实战(三十二)集成 ofdrw,实现 PDF 和 OFD 的转换、SM2 签署OFD

目录 一、OFD 简介 1.1 什么是 OFD?1.2 什么是 版式文档?1.3 为什么要用 OFD 而不是PDF? 二、ofdrw 简介 2.1 定义2.2 Maven 依赖2.3 ofdrw 的 13 个模块 三、PDF/文本/图片 转 OFD(ofdrw-conterver) 3.1 介绍&#xf…...

SolidWorks使用显卡教程

操作步骤: 打开注册表编辑器 按下键盘上的 Win R 组合键,输入 regedit 并按回车键,打开注册表编辑器。 导航到显卡信息路径 在注册表中依次展开以下路径: plaintext HKEY_CURRENT_USER\Software\SolidWorks\SOLIDWORKS 2021\Per…...

mysql 查询进程查看并释放

在MySQL中,查看和管理进程(例如查询、连接等)是数据库维护和性能调优的重要部分。以下是一些常用的方法来查看MySQL进程并释放它们。 1. 查看进程 你可以使用SHOW PROCESSLIST命令来查看当前MySQL服务器上的所有进程。这个命令会显示正在执…...

C++代码2-多目标算法求解车辆路径规划

为了解决车辆路径规划问题,我们需要在同一模型中同时考虑多个目标,其中一个目标是降低运营总成本,而另一个目标是降低总的碳排放量。使用组合算法,包括人工蜂群算法(Artificial Bee Colony, ABC)、模拟退火算法(Simulated Annealing, SA)、以及多目标优化算法MODAD(Mu…...

JAVA学习*接口

接口 在生活中我们常听说USB接口,那接口是什么呢? 在Java中,接口相当于多个类的一种公共规范,是一种引用数据类型。 定义接口 public interface IUSB {public static final String SIZE "small";public abstract vo…...

Matplotlib

一、Matplotlib快速入门 学习目标 了解什么是matplotlib 为什么要学习matplotlib matplotlib简单图形的绘制 1、什么是Matplotlib 是专门用于开发2D图表(包括3D图表) 以渐进、交互式方式实现数据可视化 2、为什么要学习Matplotlib 可视化是在整个数据挖掘的关键辅助工…...

新版frp-0.61.0 实现泛解析域名穿透 以及 https启用

需要在公网服务器的域名解析平台 泛域名 *.aa.com 解析到frp 公网服务器的ip x.x.x.x 对于frpc.toml 文件的 serverAddr 绑定的ip 需要公网服务器放行 bindPort 对于的端口 frpc.toml serverPort 对于的的是 frps.toml bindPort 端口 frps.toml bindPort 7000 vhostHTTPP…...

HTTPS 加密过程详解

HTTPS 详解及其加密过程流程框架 HTTPS(Hypertext Transfer Protocol Secure)是一种基于 HTTP 协议的安全通信协议,通过 SSL/TLS 协议对传输数据进行加密和身份验证,解决了 HTTP 明文传输的安全隐患。以下是其核心原理和加密流程的…...

lua垃圾回收

lua垃圾回收 lua 垃圾回收 lua 垃圾回收 collectgarbage(“count”)获取当前lua脚本占用内存字节数(单位为KB)。 collectgarbage(“collect”)执行一次垃圾回收。 xxxnil 将变量置为空,会释放内存。 lua中的机制和c#中回收机制很类似 解除羁绊(置为空)。 --垃圾回…...

springboot继承使用mybatis-plus举例相关配置,包括分页插件以及封装分页类

以下是使用 MyBatis-Plus 分页插件的完整配置和封装步骤&#xff0c;包括日志输出、驼峰转下划线、逻辑删除以及分页属性类的封装。 1. 引入依赖 确保在 pom.xml 中已经引入 MyBatis-Plus 的依赖&#xff1a; <XML> <dependency><groupId>com.baomidou<…...

智能汽车以太网系统测试:聚焦ETH链路高负载性能表现

引言 在智能汽车高速发展的今天&#xff0c;车载以太网作为车辆信息交互的“神经网络”&#xff0c;承担着传输海量数据的关键使命。它不仅能够满足车辆对高带宽、低延迟和高可靠性的通信需求&#xff0c;还为自动驾驶、智能座舱等复杂功能提供了强大的技术支持。然而&#xf…...

学习笔记:黑马程序员JavaWeb开发教程(2025.3.21)

10.7 案例-员工管理-分页查询-分析 形参的默认值可以使用注解来设置&#xff1a;RequestParam(default “1”) 10.8 案例-员工管理-分页查询-PageHelper插件 分页插件PageHelper帮助完成有关分页的所有操作&#xff0c;我们只要正常使用查询语句就可以了。插件会自动…...

计算机网络精讲day1——计算机网络的性能指标(上)

性能指标1&#xff1a;速率 概念1&#xff1a;比特 英文全称是binary digit&#xff0c;意思是一个二进制数字&#xff0c;因此一个比特就是二进制数字中的1或0&#xff0c;比特也是信息论中使用的信息量单位。 概念2&#xff1a;速率 网络中的速率指的是数据的传送速率&#…...

gin-路由handler封装思路

约束handler入参和返回为func(ctx, req) (resp, error)。通过反射&#xff0c;封装handler&#xff0c;在调用前后写入入参和返回的处理。 package testingimport ("context""fmt""reflect""strings""testing" )type ReqPa…...

【实战案例】用STAR+3W模型拆解电商支付系统设计文档

各位开发者朋友&#xff0c;上次分享了结构化写作的黄金公式后&#xff0c;很多同学反馈需要更具象的落地方法。今天通过真实电商支付系统案例&#xff0c;手把手教你用STAR3W模型写出可执行的设计文档&#xff01; 结构化写作的「黄金公式」 STAR原则 3W模型 Situation&…...

计算机组成原理和计算机网络常见单位分类及换算

计算机组成原理&#xff08;主要用于存储、内存、缓存等&#xff09; 计算机网络&#xff08;主要用于传输速率&#xff09; 直观对比...

线性筛法求素数

时间复杂度 o&#xff08;n&#xff09; int cnt, primes[N];//cnt用来记录素数的下标 bool st[N];//用来标记合数 int minp[N];//最小质因数 void get_primes(int n) {for(int i 2;i < n;i )//从2开始找数 {if(!st[i])//如果这个数没有被筛出去过&#xff0c;说明是一…...

触动精灵对某东cookie读取并解密--记lua调用C语言

在Mac上构建Lua扩展模块&#xff1a;AES解密与Base64解码实战 今天我要分享一个实用技术&#xff1a;如何在Mac系统上为Lua编写和编译C扩展模块&#xff0c;特别是实现一个某东iOS PIN码解密功能的扩展。这对于需要在Lua环境中执行高性能计算或使用底层系统功能的开发者非常有…...

GEO:在AI时代抢占DeepSeekC位?

前言&#xff1a;当SEO遇见AGI——一场静默的流量革命 在生成式AI日均处理53亿次查询的今天&#xff0c;传统SEO的「关键词-排名-点击」逻辑正在崩塌。DeepSeek、ChatGPT、豆包等大模型用动态生成的答案&#xff0c;悄然截流了68%的搜索需求。更残酷的是&#xff1a;当用户问&q…...

【设计模式】策略模式

以下是格式优化后的Markdown文档&#xff0c;仅调整代码缩进&#xff0c;保持内容不变&#xff1a; 四、策略模式 策略(Strategy) 模式是一种行为型模式&#xff0c;其实现过程与模板方法模式非常类似——都 是以扩展的方式支持未来的变化。本章通过对一个具体范例的逐步重构…...

第J6周:ResNeXt-50实战解析

文章目录 一、前期准备1.设置GPU2.导入数据3.查看数据 二、数据预处理1.加载数据2.可视化数据3.再次检查数据4.配置数据集 四、模型复现1. 分组卷积模块2. 定义残差模块3. 堆叠残差单元4. 搭建ResNext-50网络5. 查看模型摘要 五、训练模型六、结果可视化总结&#xff1a; &…...

调试 ResNet18 cpp实现中的段错误(SIGSEGV)问题

调试 ResNet18 cpp实现中的段错误&#xff08;SIGSEGV&#xff09;问题 问题分析 您的程序在运行时遇到了段错误&#xff08;SIGSEGV&#xff09;&#xff0c;GDB显示错误发生在main()函数的第一行&#xff08;resnet18_allo_test.cpp:33&#xff09;。这种情况看起来很奇怪&…...

详细介绍IDI_APPLICATION和IDC_ARROW

书籍&#xff1a;《windows程序设计(第五版)》 环境&#xff1a;visual studio 2022 内容&#xff1a;HELLOWIN程序 说明&#xff1a;以下内容大部分来自腾讯元宝。 ​IDI_APPLICATION 与 IDC_ARROW 详解 ​1. IDC_ARROW&#xff08;光标资源标识符&#xff09;​ ​定义与…...

curl库+openssl库windows编译

一、工具准备 Visual Studio 2008&#xff1a;确保安装了 C 开发工具。 Git&#xff1a;用于克隆 cURL 的源码。 Perl&#xff1a;可以从 ActiveState Perl 下载并安装。 NASM&#xff08;可选&#xff09;&#xff1a;如果需要汇编优化&#xff0c;可以从NASM 官方网站 下载并…...

今日行情明日机会——20250321

后续投资机会分析 结合2025年3月21日盘面数据&#xff08;涨停56家&#xff0c;跌停31家&#xff09;&#xff0c;市场呈现结构性分化行情&#xff0c;海洋经济成为绝对主线&#xff0c;机器人概念局部活跃&#xff0c;人工智能表现较弱。以下是具体方向与策略建议&#xff1a…...

repo init 错误 Permission denied (publickey)

一、已经生成ssh-key并设置到gerrit上 二、已经设置.gitconfig &#xff08;此步骤是公司要求&#xff0c;设置gerrit地址为一个别名之类的&#xff0c;有的公司不需要&#xff09; 然后出现下面的错误&#xff0c;最后发现忘记设置git的用户名和邮箱 1. git config --globa…...

STM32 模拟SPI 模式0

SPI 模式 0 的时钟极性&#xff08;CPOL&#xff09;为 0&#xff0c;时钟相位&#xff08;CPHA&#xff09;为 0。CPOL 0 意味着时钟信号空闲时为低电平&#xff0c;CPHA 0 表示在时钟信号的第一个跳变沿&#xff08;上升沿&#xff09;进行数据采样。 #include "stm3…...

MySQL实现全量同步和增量同步到SQL Server或其他关系型库

在将MySQL中的两张表同步到SQL Server的过程中&#xff0c;全量同步和增量同步各有其优缺点。全量同步简单直接但可能耗时较长且资源消耗大&#xff0c;而增量同步则更加高效但需要额外的逻辑来处理数据的变更。以下是对这两种同步方式的详细解释及代码示例的完善。 完整代码示…...

详细解析GetOpenFileName()

书籍&#xff1a;《Visual C 2017从入门到精通》的2.3.8 Win32控件编程 环境&#xff1a;visual studio 2022 内容&#xff1a;【例2.34】打开文件对话框和另存为。 说明&#xff1a;以下内容大部分来自腾讯元宝。 GetOpenFileName() 是 Windows API 中用于显示标准文件打开…...

FPGA----完美解决Windows下[XSIM 43-3409][XSIM 43-3915]错误

大家好久不见&#xff0c;今天开始又要重操旧业了&#xff01;最近会更新很多关于petalinux的踩坑日记&#xff0c;敬请期待&#xff01; 先更新一个常见问题&#xff0c;使用Vivado仿真时C编译器报错问题。如下所示 ERROR: [XSIM 43-3409] Failed to compile generated C fi…...

LeetCode Hot100 刷题路线(Python版)

目录 1. LeetCode Hot100 刷题笔记&#xff08;1&#xff09;—— 哈希、双指针、滑动窗口 2. LeetCode Hot100 刷题笔记&#xff08;2&#xff09;—— 子串、普通数组、矩阵 3. LeetCode Hot100 刷题笔记&#xff08;3&#xff09;—— 链表 4. LeetCode Hot100 刷题笔记&…...

宇树科技纯技能要求总结

一、嵌入式开发与硬件设计 核心技能 嵌入式开发&#xff1a; 精通C/C&#xff0c;熟悉STM32、ARM开发熟悉Linux BSP开发及驱动框架&#xff08;SPI/UART/USB/FLASH/Camera/GPS/LCD&#xff09;掌握主流平台&#xff08;英伟达、全志、瑞芯微等&#xff09; 硬件设计&#xff1a…...

Docker学习笔记(十)搭建Docker私有仓库

一、环境配置 1、宿主机系统&#xff1a;macOS Sequoia(版本15.2) 2、虚拟机VMware Fusion版本&#xff1a;专业版 13.6.2 (24409261) 3、虚拟机系统&#xff1a;AlmaLinux-9-latest-x86_64-boot.iso 二、安装Harbor开源企业级Docker镜像 Harbor 是一个开源的企业级 Docker…...

FastAPI WebSocket 无法获取真实 IP 错误记录

FastAPI WebSocket 无法获取真实 IP 错误记录 问题描述 在使用 FastAPI WebSocket 服务时&#xff0c;发现无法获取设备的真实 Remote IP&#xff0c;所有连接均显示为内网地址 10.x.x.1。以下是完整的排查过程及解决方案。 排查步骤 1. 基础信息检查 • 现象复现&#xff1…...

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例4,TableView15_04导出当前页数据示例

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例4,TableView15_04导出当…...

【Linux】快速上手Makeflie CMake

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:Linux ⚙️操作环境:Xshell (操作系统:Ubuntu 22.04 server 64bit) 目录 &#x1f4cc;快速上手Makefile 基本结构 变量 自动变量 常用目标 &#x1f4cc;快速上手CMake CMake与Makefile的关系 CMake的使用步骤 常用命令…...

Python连接数据库进行增删改查

更多优质文章 _>_>_>_>_>✍✈✉戳我 目录 1.导入相关库 2.创建连接 3.插入数据 4.删除数据 5.修改数据 6.查询数据 7.更多干货 1.导入相关库 import pymysql -----pip install pymysql #下载库 2.创建连接 conn pymysql.connect(hostlocalho…...

数据库的两种模式

数据库的 严格模式&#xff08;Strict Mode&#xff09; 和 宽松模式&#xff08;Non-Strict Mode&#xff09; 是数据库管理系统&#xff08;DBMS&#xff09;中用于控制数据验证和处理方式的两种不同模式。它们的主要区别在于对数据完整性、一致性和错误处理的严格程度。 1. …...

【css酷炫效果】纯CSS实现立体旋转立方体

【css酷炫效果】纯CSS实现立体旋转立方体 缘创作背景html结构css样式完整代码效果图 想直接拿走的老板&#xff0c;链接放在这里&#xff1a;https://download.csdn.net/download/u011561335/90492014 缘 创作随缘&#xff0c;不定时更新。 创作背景 刚看到csdn出活动了&am…...