news 2026/9/9 6:02:44

XSS与CSRF本质区别:从攻击原理到修复实践的全面对比

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
XSS与CSRF本质区别:从攻击原理到修复实践的全面对比

说实话,做了这么多年安全,我最常被问到的问题不是“某个漏洞怎么利用”,而是这类带着困惑的对比题:XSS 和 CSRF 到底有什么本质区别?

这两个名字在热搜上绑在一起出现不是没道理的——它们都出现在 OWASP Top 10 里,都跟 Web 前端有关,扫出来都是“高危”,修起来都容易改错方向。更麻烦的是,很多刚入行的同学把 XSS 的修复方案套到 CSRF 上,或者反过来,最后被测试人员打回来说“漏洞没修干净”。我见过不少项目卡在验收阶段,就是因为这两类问题被混为一谈。

所以这篇我不打算只丢定义,我想从一个实操者的角度,把这两个漏洞的攻击链路、触发条件、修复要点全部拆开,用对比的方式讲清楚。你会看到它们本质上的差异到底在哪里:一个往你的页面里“塞东西”,另一个借你的身份“发请求”。能分清这句话,后面所有细节都顺了。

这个内容适合三类人:正在学 Web 安全的初学者、负责修复外部漏洞报告的开发同学、以及做安全测试需要写报告的同学。我尽量不用太悬的词,遇到关键概念会展开讲,读完你至少能做到:拿到一个漏洞描述,能快速判断是 XSS 还是 CSRF,并知道该往哪个方向修。

1. 先建立直觉:XSS 和 CSRF 到底在“骗”谁

1.1 用两个场景秒懂概念

先说 XSS。假设你打开了一个论坛,有人在一篇帖子的评论区发了一段内容,这段内容里混着一段浏览器能识别的脚本。论坛程序没做过滤,直接把这帖子的评论原样显示给了所有浏览的人。你的浏览器加载到这个页面时,那段脚本就在你的浏览器里执行了。它可以读取当前网站的 Cookie、篡改页面内容、把你输入的表单数据悄悄传到另一个域名下。

整个过程里,攻击者骗的是浏览器:浏览器以为脚本是网站自己生成的,于是乖乖执行了。用户本身什么都没做错,只是浏览了一个被“污染”的页面。

再说 CSRF。假设你登录了某银行的网上转账系统,浏览器里还留着登录凭证(Cookie)。这时候你被诱导打开了一个恶意网站,这个网站的页面里藏着一个指向银行转账接口的请求。浏览器向银行服务器发起这个请求时,自动带上了你之前登录留下的 Cookie。银行服务器一看:Cookie 有效,请求是从用户浏览器发出来的,也没校验请求到底是不是用户主动操作的,于是就把钱转出去了。

整个过程里,攻击者骗的是服务器:服务器以为请求是用户本人在当前网站页面上发起的,实际上用户只是打开了另一个网站,请求是被第三方页面“借”浏览器之手发出去的。

这两个场景,一个在讲“恶意代码如何进入页面并执行”,一个在讲“伪造请求如何被服务器接受”。这就是最初级的本质区别:XSS 是代码注入问题,CSRF 是请求伪造问题。

1.2 受害者视角不同,修复思路自然不同

从受害者角度看,XSS 的受害者是“看到这个页面的用户”,可能是网站管理员,也可能是普通访客。CSRF 的受害者也是“已登录的用户”,但被攻击的前提是用户恰好处于登录态,且目标网站没做来源校验。

可别小看这个视角差异。它直接决定了漏洞修复的归属:XSS 修不好,是“输出净化”和“前端渲染规范”的问题,由内容和前端代码负责;CSRF 修不好,是“请求校验”的问题,主要靠后端接口加 token、校验来源。你如果看到一份漏洞报告只写了“存在跨站脚本漏洞”,先别急着在接口层加 token,那是南辕北辙。

我见过一个真实案例:某系统被扫出跨站脚本漏洞,开发同学说“我们已经在接口层做了鉴权,没登录拿不到数据”,结果复查时问题依旧。因为 XSS 发生在浏览器端渲染阶段,跟接口鉴权没关系;攻击者 POC 用的是未登录也能访问的搜索页面,参数被直接反射到 HTML 里执行了。后来加了输出编码,问题才真正解决。这就是不理解漏洞本质导致的“假修复”。

2. 攻击机制逐层拆解:脚本注入与请求伪造

2.1 XSS 的三种形态,别再只盯着反射型

XSS 不是一个单一场景,一般分成反射型、存储型和 DOM 型三种。很多文章把反射型当成 XSS 的代表来讲,但实际修复和排查时,三种形态的差异非常关键。

反射型 XSS是最容易被安全扫描器发现的。用户提交的参数被服务端接收后,没有经过任何处理就拼到返回的 HTML 里。比如一个搜索页面,输入框里的关键词会显示在页面上:“您搜索的是:xxx”。如果这个 xxx 没有被转义,攻击者构造一个特殊链接,诱使受害者点击,脚本就在受害者的浏览器里执行了。特征很明显:恶意 payload 在 URL 里,服务端负责“反射”到页面。

存储型 XSS的危害更大。恶意脚本先被提交到服务器数据库里,之后所有访问该页面的用户都会触发。评论区、留言板、用户昵称、资料编辑,这些都是重灾区。一旦某个管理员账号查看了包含恶意脚本的页面,攻击者就可能拿到管理员的会话凭证,直接接管后台。存储型 XSS 更强调对“数据入口到展示出口”整条链路的审查,单靠给 URL 参数做过滤不一定管用。

DOM 型 XSS跟前两者有个本质差异:它不一定经过服务端。前端代码直接用innerHTMLdocument.writelocation.hash这类接口,把 URL 参数或者本地存储里的内容当作 HTML 解析了。攻击链完全发生在浏览器端,服务端日志里甚至看不到恶意请求。这意味着你加再多服务端过滤输出编码,都拦不住 DOM 型 XSS,得从前端代码层面去改。很多团队第一次遇到 DOM 型 XSS 时都很困惑,因为扫描器明明报了 URL,但看服务端日志什么都没有,源头在 JS 代码里。

2.2 CSRF 的攻击链路与核心条件

CSRF 要成功,一般得满足三个条件:

  1. 用户已经登录了目标站点,且浏览器持有有效的会话凭证(Cookie);
  2. 目标站点的敏感操作接口没有校验请求来源,或者只依赖 Cookie 判断身份;
  3. 用户访问了攻击者精心构造的第三方页面。

攻击者页面里的“武器”可以非常简单。如果是 GET 请求就能完成的操作,一个图片标签就够了;如果是 POST 请求,攻击者可以写一个隐藏的表单,页面一加载就自动提交。整个过程用户完全无感知,浏览器也不觉得有什么问题——它只是忠实地“替你”带上 Cookie 发了一个请求。

这里绕不开的一个核心机制是:Cookie 的自动携带。浏览器为了让你在不同页面之间访问时保持登录态,只要请求发往的目标域名匹配,就会自动带上该域名下的 Cookie,而这个行为不分请求是从哪个页面发起的。服务器如果只靠 Cookie 判断“请求者是谁”,却不在乎“这个请求是不是用户在当前站点页面上主动触发的”,就给了 CSRF 钻空子的机会。

2.3 危害半径的差异:为什么 XSS 常常更“致命”

CSRF 能做的操作,一般局限在目标站点的功能范围内:改个密码、转笔账、发个帖子。它很难“读取”数据,因为攻击者发起的请求最终响应落在受害者浏览器里,攻击者看不到返回内容,除非配合其他接口把数据外带。

XSS 则不一样。脚本在受害者的页面上下文里执行,等于攻击者拿到了一个“页面内部的视角”。他可以读取 Cookie、读取页面上的敏感数据、嗅探用户键盘输入、修改页面内容诱导用户再输入密码、甚至调用后端 API 以用户身份做任意操作。

所以安全圈常说:XSS 常常是“夺舍”,CSRF 是“借刀”。有经验的测试人员一旦发现存储型 XSS,通常会尝试往会话接管方向利用;而 CSRF 一般被归为逻辑漏洞,危害大小完全取决于受影响接口的敏感程度。如果那个接口只是改个用户昵称,危害就低,如果接口能改支付密码,那危害就非常高了。

3. 五个维度看清 XSS 与 CSRF 的本质区别

这个部分是全文核心。很多对比文章只是把两个漏洞的定义各写一遍,看得人更晕。我换一种做法,用一张五个维度的对照表,再逐个展开解释。

对比维度XSS(跨站脚本)CSRF(跨站请求伪造)
攻击对象浏览器端,针对访问页面的用户服务端接口,针对已登录用户的会话
核心成因未对用户输入做过滤和输出编码,导致恶意脚本执行请求未校验来源,仅凭 Cookie 等凭证判断身份
触发方式用户点击恶意链接、访问被植入脚本的页面用户在登录态下访问了第三方恶意页面
攻击意图窃取数据、篡改页面、冒充用户操作冒充用户执行特定操作,通常不直接读取数据
修复重心输出编码、CSP、输入白名单、前端安全渲染CSRF Token、SameSite Cookie、校验 Origin/Referer

3.1 从信任模型上看谁“背叛”了谁

Web 安全里很多漏洞,本质都是信任模型出了问题。XSS 的问题在于,服务端信任了用户输入,前端渲染时又没有重新建立“内容与代码”的边界。你把用户提交的字符串当成页面的一部分输出,等于把一个陌生人放进你家客厅,还给了他话筒。凡是没有白名单校验的富文本、文章、评论展示,都容易踩这个坑。

CSRF 的问题在于,服务器信任了“浏览器自动携带的凭证”就等于用户本人的意志。浏览器出于便利性设计,会主动把 Cookie 带在跨站请求上,服务器却把这种“来自浏览器”的请求等同于“来自用户操作”,这就形成了一个信任缺口:攻击者只是利用浏览器作为中间人,请服务器开了门。

用一个生活类比可能更好记:XSS 等于有人往你办公室的公告栏里贴了一张带病毒的二维码,每个路过的人都会去扫;CSRF 等于有人捡了你的工牌复印件,到门禁那里一晃,门禁系统只认工牌不认人,就放他进去了。一个是内容被污染,一个是身份被冒用,防线位置完全不同。

3.2 触发条件:一个需要“代码执行”,一个只需“请求发出”

判断一个漏洞到底是 XSS 还是 CSRF,最快的办法是看攻击成功的最小条件是什么。

XSS 要成功,必须有“脚本在目标页面上下文里执行”这个环节。所以攻击者才费尽心思去 bypass 过滤、寻找输出点。如果你看到 POC 里出现了<script>onerrorjavascript:这些关键词,那基本就是 XSS 方向。

CSRF 要成功,不需要脚本执行。哪怕攻击者页面禁用 JavaScript,照样可以用一个纯 HTML 表单发请求。你看到的 POC 往往是一个独立的 HTML 页面,或者一段自动提交的表单代码。它关注的是“这个请求发出去以后服务器认不认”。

这个区分在实战里特别有用。漏洞报告里如果给了 URL 和一个请求包,你看请求包里是否带了一个不可预测的 token;如果没有 token 或者 token 是固定的,并且修一下请求方法就能复现,那大概率是 CSRF,而不是 XSS。

3.3 拿到的“权限”也不一样

从攻击链路末端来看,XSS 一旦执行成功,攻击者获得的是“受害者浏览器里的页面权限”。这个权限可以实时变化——用户在页面上输入什么,脚本都能看到;用户跳转到站内哪个子页面,脚本也能跟着注入。攻击者甚至可以写一个键盘记录器,长期蹲守。

CSRF 则更像“一次性命令注入”。攻击者预先构造好一个请求,服务器执行完就结束了,攻击者拿不到执行结果的回显。例如通过 CSRF 修改了用户邮箱,攻击者确实能达成后续“找回密码”的目的,但他并不能看到“修改成功”页面里返回的用户信息。

深入理解这一点,你在做风险评估时就能分得清轻重:一个存储型 XSS 如果打到管理后台,基本等于后台沦陷;而一个改昵称的 CSRF,只要不影响核心业务,一般排在低优先级慢慢修。漏洞有危重之分,先把高危的处置掉,再回头处理低危的,才不会把自己搞得草木皆兵。

4. 实操视角:用 Pikachu 靶场亲手复现一次

4.1 Pikachu 靶场里的 XSS 模块怎么玩才有效

理论讲多了容易飘,我建议你自己动手在本地搭一套 Pikachu 靶场,动手之前务必确认它运行在隔离环境里。这是一套专门用来练习 Web 漏洞的 PHP 靶场,里面把 XSS 和 CSRF 都单独拆了模块,特别适合做对比实验。

进到 XSS 模块后,你可以先做反射型。页面上有个输入框,随便输入一段字符串提交,观察 URL 参数和页面响应。接着换个思路:输入一段<script>alert(document.domain)</script>,看看浏览器是否弹窗。弹窗说明脚本已经在你自己的浏览器上下文里执行了。再打开开发者工具,切到 Network 面板看那个请求的响应体——你会看到服务端确实把这段脚本原样返回了,这叫反射型,服务端参与了“反射”,责任在后端输出。

再去 DOM 型 XSS 模块。同样是输入框,但这次你提交的内容会跑到 URL 的 hash 部分(#后面的内容)。你刷新页面,脚本依然执行,但是看 Network 面板,可能根本没有把这个内容传到服务端的请求。这就是 DOM 型的关键特征:整个渲染过程由前端 JS 直接操作 DOM 完成,后端根本不知道你输入过什么。

做完这两个实验,你就能直观理解:为什么反射型 XSS 可以在服务端做输出编码修复,而 DOM 型 XSS 必须在 JS 代码层面把innerHTML换成textContent或者使用安全的 DOM 操作 API。同样叫 XSS,修复点完全不同。

4.2 复现 GET 型 CSRF:一个 URL 就能把状态改了

Pikachu 的 CSRF 模块分 GET 和 POST 两种。我的建议是先玩 GET 型。

你登录靶场以后,找到“修改个人信息”这类功能,里面一般是个表单,提交方式是 GET。你修改一下昵称,提交,然后看浏览器地址栏,你会发现整个修改操作的关键参数都在 URL 里躺着。这时你可以复制这个完整 URL,关掉表单页面,在新标签页里再访问一次。结果如何?昵称又变回攻击者想要的值了。

这个“复制 URL 到新标签页访问就能生效”的过程,本质上就是一次 CSRF 攻击的最小演示——因为浏览器发起 GET 请求时,自动带上了该域名下的 Cookie,服务器只看到“请求来自一个已登录用户”,就直接执行了。你自己手动造不出那个带着所有参数的恶意 URL,但如果有攻击者把它藏在第三方页面的图片标签里,效果一模一样。

POST 型 CSRF 的复现稍微复杂一点,需要用 Burp Suite 抓包,把 POST 请求转成一个自动提交表单的 HTML 页面,再放到本地打开测试。你会发现:只要服务器没有校验 token,也没有校验 Referer,这个自动提交的页面同样能完成操作。区别仅仅在于 GET 型的 POC 更简单,所以外部漏洞报告里 CSRF 的案例常以 GET 型为主。

4.3 为什么 CSRF 的复现往往看起来“不够酷炫”

很多初学者攻击完 CSRF 后总觉得不过瘾:没有弹窗,没有数据外带,只是默默把数据改了,甚至看不出波澜。这恰恰体现了 CSRF 的特点:它不追求“炫技”,它追求“动作完成”。

理解了这一点,你再去看漏洞报告里的 CSRF 就会更冷静。报告不会给你看炫酷的脚本,它只会给你贴一段请求包,注明“该请求未包含 CSRF Token”。你要做的不是复现一个视觉冲击力强的攻击,而是去确认:这个请求有没有不可预测的参数?有没有校验来源?如果都没有,漏洞就算数。

我自己排查时,会额外看一眼这个请求是不是“幂等”的。所谓幂等,就是同一个请求重复执行,效果不会叠加。GET 型 CSRF 复现后如果只是改了同名数据,影响还好评估;但如果一个接口反复调用会扣钱、发消息、生成订单,那 CSRF 的危害会被放大很多倍。测试报告里写“高危”,多半也是因为这类副作用接口存在。

5. 修复方案完全不同:从 XSS 三步修复到 CSRF 403 排查

5.1 反射型 XSS 的“三步修复”怎么落地

经常有外部安全扫描报告把反射型 XSS 报得很详细,有些报告甚至会给出修复建议。我认可一个说法:反射型 XSS 的常规修复可以总结成三步,这也是很多企业安全团队验收时的统一口径。

第一步,定位。找到用户输入在哪里被接收、又在哪里被输出。用开发者工具看响应,或者直接搜代码里的echoprint、模板渲染语句,找出所有把参数拼进 HTML 的地方。这一步不做好,后面都是盲修。

第二步,判断输出上下文。同一个参数渲染到 HTML 标签里、属性里、JavaScript 字符串里,修复方式都不一样。在 HTML 正文里要做 HTML 实体编码,在href属性里要做属性编码并禁止危险协议,在<script>字符串里要做 JS 编码。一个常见的坑是:只做 HTML 实体编码,却忽略了属性或 JS 上下文,扫描器复查仍能绕过。

第三步,输入侧加固。虽然输出编码是主防线,但输入侧白名单也不可少。业务上如果允许的字符集有限,比如用户名只允许中英文和数字,就在输入侧直接拦截。这能减少后续的编码负担,但不要把它当成唯一防线——因为输入过滤很容易被各种编码和绕过手法击穿,输出编码才是兜底的那道闸。

提示:报告里如果写的是“存储型 XSS”,请把第三步的范围扩大。凡是会存库再展示的字段,都要按“存储-渲染”两条链路重新排查,比如历史存量数据不可能全改一遍输入,这时输出编码的重要性更加突出。

5.2 为什么 CSRF 修复首选 Token 而不是 Referer

CSRF 修复最主流的方案是加 CSRF Token,也就是在表单或请求头里放一个随机的、与用户会话绑定的不可预测值。服务器收到请求后,先校验这个 Token,不对就拒绝。原理很简单:攻击者的第三方页面上无法提前知道当前用户会话里 Token 的值,所以构造不出合法请求。

也有团队想走捷径,用校验 Referer 或 Origin 的方式。这两个头确实能标识请求来源,但 Referer 有一个很尴尬的问题:为了隐私,部分浏览器或浏览器插件会裁剪它;部分老系统部署在 HTTPS 页面里,Referer 可能为空,导致正常用户都被误伤。相对而言,Origin 头在现代浏览器里更可靠,但仍然不是 100% 稳定。所以行业共识是:Referer/Origin 校验只能作为辅助,Token 才是主角

Token 实现时有个细节经常被忽略:Token 一定要绑定会话,还要随机生成。有些系统把 Token 写死在前端代码里,等于没有;有些系统 Token 固定一段时间不换,被泄露后长期有效;还有一些把 Token 放 URL 里,通过 Referer 泄露出去了。这几种都是“看似修了,实则没修”。

5.3 排查 403 CSRF:接口报错别急着骂前端

如果你做的是前后端分离项目,排查 CSRF 问题时最常遇到的报错就是“接口返回 403”,错误信息里写着CSRF之类。这种报错大多数不是漏洞,而是防护组件生效了——Spring Security、Django、Laravel 这些框架默认开启了 CSRF 校验。

遇到 403 时,先按这个顺序排查:

  1. 请求里有没有带上页面渲染时生成的 Token?前端如果是自己用fetch发请求,经常漏掉从 Cookie 或 DOM 里取 Token 这一步。
  2. Token 有没有过期或错位?比如用户停留在页面上很久才提交,Token 已过期;或者页面开了多个标签页,不同标签页的 Token 互相覆盖。
  3. 前后端域名不一致时,Cookie 是否能正常写入?如果 Token 放在 Cookie 里,跨域请求默认不带,也会 403。
  4. 后端有没有把请求路径排除在校验范围之外?有些接口因为历史原因没纳入 CSRF 保护,这时就要判断:这个接口是不是敏感操作?如果不敏感,排除逻辑可以接受;如果敏感,得把保护补上。

有一次我带项目排查一个诡异的“用户频繁反馈保存失败”,最后发现是新来的前端在封装请求工具时,把 Token 字段写死成了一个固定测试值,联调时能通,一上生产就 403。这种问题不在漏洞层面,而在联调规范。后来我们把 Token 获取统一封装,线上就安静了。

6. 常见误区与实战排查技巧速查

6.1 把 XSS 和 CSRF 混为一谈时的典型误判

这里整理一份我实际评审中见过的高频误区,每一条都对应过真实项目返工。

误区一:认为 HttpOnly 能防住 XSS。HttpOnly 只是让 JavaScript 读不到 Cookie,能降低 XSS 后的会话劫持风险,但 XSS 脚本仍然可以改页面、发请求、录键盘。只开 HttpOnly 不修 XSS,等于只把门锁换了,但窗户还开着。

误区二:认为 CSRF Token 放在 localStorage 里就安全。如果页面存在 XSS,脚本可以直接读取 localStorage 里的 Token,再伪造请求。Token 防的是“第三方伪造”,防不了“同页面恶意脚本”。所以 CSRF Token 要配合 XSS 修复一起做,单靠 Token 扛不住 XSS 的冲击。

误区三:CSSRF 只存在于 GET 请求。有人说“我们把操作全改成 POST 就安全了”,这是误解。POST 请求同样可以被自动提交表单触发,只是构造成本比 GET 高一点。真正关键的不是请求方法,而是有没有不可预测的校验参数。

误区四:扫描器报了 XSS,就一定是反射型的判断。有些扫描器会把 DOM 型 XSS 的告警也标成“反射型”,因为它的检测入口确实是一个带参数的 URL。拿到报告以后一定要手动打开页面,看看恶意参数到底是在服务端响应里出现,还是只在前端 JS 里流转。修错层级的代价很大,必须人工复核。

6.2 现场排查时我的一句话判断法

最后分享一个很土但很实用的判断方法。拿到一个安全问题,先问自己一句:如果用户什么都不点、什么都不输入,只是打开了一个页面,问题会发生吗?

如果答案是“会”,那基本是 CSRF——这个请求在你打开页面的一瞬间就发出去了,浏览器自动带上了 Cookie。你排查的方向是请求校验和 Token。

如果答案是“不会,用户得点一个链接,或者得在某处提交一段内容”,那大概率是 XSS 相关。再顺着“链接里的参数会渲染在页面哪个位置”、“提交的内容会展示在哪个页面”往下查,很快能定位到反射型还是存储型。

这个方法不能替代专业测试,但它能在海量漏洞报告里帮你快速分诊。我靠这个“一句话判断法”过滤掉过不少误报和低质报告,也帮开发同学减少了很多无效返工。

6.3 你在修复时应当建立的最小验收清单

如果团队没有专门的安全测试人员,建议每次修复完 XSS 或 CSRF 后,对照这份清单自查一遍,避免返回去又被测试打回:

  • XSS 修完后,按修复前 POC 原样测一遍,确认不再执行;再试几个常见变形,比如大小写混合、HTML 实体编码、事件属性触发(onerroronclick等),确保编码逻辑没有漏掉上下文。
  • 如果修复依赖输入侧过滤,请确认同样场景下存储型 XSS 的展示路径也被覆盖,特别注意“存量数据”在改动前的历史记录,仅靠输入过滤管不到已经入库的脏数据。
  • CSRF 修完后,用浏览器开发者工具把请求里的 Token 删掉或篡改,看服务端是否拒绝;再把 Token 改成另一个会话的 Token,确认校验绑定的是“当前会话”而不是“任意登录状态”。
  • 确认前端在 Token 过期后能给用户明确提示,不要只弹一个晦涩的 403 JSON 错误,否则上线后会被用户骂。
  • 涉及核心业务操作,额外检查一次“是否需要二次校验”,比如改密、转账这类敏感场景,即使加了 Token,加上短信验证码或输入原密码也能极大降低“已登录会话被借刀”的风险。

以上这些条目,与其说是安全验收标准,不如说是我踩坑踩出来的“术后回复清单”。修复漏洞不是把 POC 压下去就行,而是要确保同类问题不会在代码重构、功能扩展时再次冒出来。

我在实际项目中还有一个感受:XSS 和 CSRF 这两个词频繁一起出现,并不只是因为它们都带“跨站”俩字。很多团队的安全建设走到一定阶段,都会同时遇到这两类问题。真正把它们分开理解之后,你会发现后续再看 SQL 注入、SSRF、越权漏洞时,会更容易抓住各自的信任模型。安全漏洞的底层逻辑是相通的:想清楚系统信任了什么、没校验什么,攻击路径自然就清晰了。

最后再分享一个我给自己团队定的“土规矩”:所有对外提交的接口,默认都要做三件事——输出编码按上下文做干净、请求校验加不可预测 Token、Cookie 能开 HttpOnly 和 SameSite 就开起来。这三件事立住,一半以上的 XSS 和 CSRF 问题根本走不到线上。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 6:01:28

半遮挡防伪溯源方案:二维码防复制与一物一码技术深度解析

做防伪溯源这几年&#xff0c;我发现一个很有趣的现象&#xff1a;很多客户拿着别人家的二维码标签来问&#xff0c;“这个码我扫一下&#xff0c;里面的信息也能看到&#xff0c;是不是直接抄过去就行了&#xff1f;”答案是&#xff0c;能抄&#xff0c;但抄了也没用。因为真…

作者头像 李华
网站建设 2026/9/9 6:01:06

TI总代理是什么?如何辨别德州仪器一级代理商

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/9 6:00:47

K8s生产环境防雪崩指南:30条集群排障军规与资源预留实践

第一次把生产集群折腾到雪崩&#xff0c;起因不是一次大版本发布&#xff0c;也不是网络被流量打满&#xff0c;而是一个节点重启。节点起来之后&#xff0c;几十个Pod全部Pending&#xff0c;调度器反复报 Insufficient cpu 。我盯着云厂商控制台里“8核16G”的规格看了半天…

作者头像 李华
网站建设 2026/9/9 5:58:25

IEEE39节点风机并网Simulink仿真全流程解析:从基座模型到动态特性

把风机模块接进IEEE39节点模型&#xff0c;再用Simulink做整套仿真&#xff0c;这件事我从第一次上手到能流利复现&#xff0c;大概踩了三轮坑。正在做新能源并网、电力系统论文复现或者风电渗透率研究的同学&#xff0c;大概率也会碰到同一个组合&#xff1a;IEEE39、风机模块…

作者头像 李华
网站建设 2026/9/9 5:57:19

AI全栈开发最佳实践:从原型到生产的完整工程链路

“AI全栈开发最佳实践”这个标题&#xff0c;我在不同场合看过无数次了。但说实话&#xff0c;大多数文章都在讲“怎么调一个大模型API”&#xff0c;而不是讲“怎么把一个AI应用真正做成产品”。我接手过不少从原型到生产的项目&#xff0c;也踩过一些用钱买不来的坑。今天这篇…

作者头像 李华
网站建设 2026/9/9 5:56:36

光伏VSG并网逆变器Simulink仿真:从原理到模型搭建全流程解析

做光伏并网逆变器仿真的人&#xff0c;这两年最绕不开的一个词就是 VSG。只要提到虚拟同步发电机&#xff0c;很多人的第一反应是储能变流器或者是风电变流器&#xff0c;其实光伏并网逆变器同样可以做成电压源型控制。项目标题写得很直白——光伏VSG&#xff0c;也就是基于虚拟…

作者头像 李华