富文本编辑器XSS漏洞深度剖析:从攻击面到甲方防御落地

甲方安全建设做了几年,我越来越觉得富文本编辑器是XSS漏洞里被低估最严重的一个点。很多后台系统都有“所见即所得”的内容编辑框,业务方离不开它,但代码层面只要过滤逻辑稍微漏一丝缝,攻击者就能用一段精心构造的HTML拿到管理员会话。富文本编辑器XSS之所以让人头疼,是因为它不像普通输入框那样“纯转义就能搞定”,而是在安全需求里明确要求“允许一部分HTML”,这个口子一开,脚本、事件、协议、编码各种绕法就全来了。

这篇文章从甲方视角把富文本编辑器XSS这件事完整拆开:先看威胁模型和攻击面,再给防御落地清单,最后放几个我实际踩过的坑。不管你是安全工程师还是后端开发,只要系统里有富文本编辑入口,这篇都能直接用上。

1. 富文本编辑器XSS的场景与威胁模型

1.1 一个能执行HTML的输入框,就是半个XSS入口

富文本编辑器的本质,是让不具备HTML知识的人通过工具栏生成结构化内容,例如把一段文字加粗、插一张图、贴一个链接。技术实现上,它会把用户操作转换成一段HTML字符串,存到数据库,渲染时再把这个字符串当成HTML插入页面。问题就在这里:普通输入框只需要把尖括号转义掉,但富文本编辑器必须保留一部分HTML标签,否则排版就没了。一旦白名单没有精确卡住,用户输入就不再是“文本”,而是会执行的代码。

我见过不少系统,开发人员为了省事把<script>、<iframe>、<object>直接过滤掉就以为安全了,却不知道<img onerror>、<svg onload>、<a href="javascript:...">一样能执行脚本。更隐蔽的是,编辑器保存的内容还会被其它页面反复加载,这种XSS天然就是存储型,管理员每打开一次后台页面就触发一次,比反射型XSS的危害大得多。它不是“弹个框”的娱乐级漏洞,而是能变成账号接管、后台篡改、钓鱼页面的跳板。

富文本编辑器所在的位置通常是业务核心区。后台内容管理、商品详情编辑、公告发布、工单回复,这些页面天然具备高权限属性。攻击者只要能把一段恶意HTML存进数据库,接下来谁打开这条内容,谁就在不知情的情况下代攻击者执行脚本。这就是存储型XSS最麻烦的地方:触发者不是受害者自己,而是所有浏览这段内容的用户,包括管理员。

1.2 威胁模型:谁在攻击,攻击什么

甲方做安全建设,第一步不是找漏洞,而是把威胁模型摆清楚。富文本编辑器XSS常见的场景有三类:

  • 面向公众用户的UGC系统:论坛帖子、评论、商品评价、简历填写。攻击者可以是任意注册用户,目标是窃取其他用户或管理员的会话。
  • 企业内部运营后台:公告、资讯、工作流审批的备注栏。攻击者可能是低权限员工,攻击目标是高权限管理员,从而横向移动到整个后台。
  • 跨域数据流:编辑器内容通过接口被多个业务系统消费。内容一旦入库,可能被展示在PC端、移动端、第三方系统里,各消费端如果不做同样级别的输出控制,风险会被放大。

从危害路径来看,攻击者构造payload -> 编辑器提交 -> 后端入库 -> 其他用户渲染 -> 浏览器执行。这条链路上,前端编辑器提交只是一个入口,真正的防线必须在后端入库前和前端渲染前同时存在。后端要做净化,前端渲染时也要有兜底措施,比如CSP。只在一端动手,都会留下盲区。

甲方还要特别关注“历史内容”这条隐形的攻击面。系统上线初期如果不安全,存量数据库里可能已经躺着大量带毒的富文本内容。某一天组件升级、模板改版,这些内容被重新渲染,就会集中爆发。威胁模型里如果不包含存量数据,安全建设就只能防住“未来”,防不住“过去”。

2. 富文本编辑器XSS攻击面拆解

2.1 标签与事件属性:最直接的注入手法

直接脚本执行是最“简单粗暴”的方式,但在现代防御体系下通常也最快被拦截。不过安全测试和甲方防守都不能只看“能不能弹alert”,而是看过滤逻辑有没有覆盖所有可执行标签。

我建议用一个基础用例集去覆盖:

类别例子说明
脚本标签<script>alert(document.cookie)</script>最常规,大多数过滤器能拦
事件属性<img src=1 onerror=alert('xss')>用图片加载失败触发事件,极常见
外部资源<svg onload=alert('xss')>SVG标签内可直接挂事件
嵌入框架<iframe srcdoc="<script>alert(1)</script>">iframe里可以执行脚本
对象/嵌入<object data="javascript:alert(1)">老式但至今仍有环境可触发

每个类别背后都要有对应的白名单策略:script、iframe、object、embed、svg、math这些标签在没有明确业务需求时一律禁用;img这种业务常用标签要允许,但只保留src、alt、width、height,事件属性全部丢弃。

这里我强调一点:禁用一个标签,不仅要把标签本身从白名单里拿掉,还要处理它的“衍生形态”。比如禁用了iframe,但form的action、base的href、link的rel仍然可能被攻击者用来做跳转、钓鱼或内容注入。真正可靠的做法是维护一份很紧的允许列表,而不是维护一份“看起来很全”的禁止列表。允许列表越小,维护成本越低,出错的概率越小。

2.2 协议与编码:用解析器思维对抗绕过程度

字符串正则的黑名单,在防御XSS时基本属于“自我安慰”。攻击者对输入做一层编码,规则就失效了。常见编码绕过包括:

  • HTML实体编码:<script>写成&#60;script&#62;,如果系统在某个环节做了HTML实体解码,就又变回了可执行脚本。
  • JavaScript 字符串转义:alert(1)写成\u0061lert(1),在JS解析器里会被还原。
  • 协议关键字混淆:javascript:写成java\nscript:、java\tscript:、大小写混合,有些弱校验识别不了。
  • 双层编码:服务端先做一次URL解码,%26%23x27%3B变成&#x27;,前端解析后又变成单引号,绕过基于单引号的过滤。

面对这些绕法,防御思路不是“把特征写全”,而是用解析器的视角去处理。对URL类属性,解析出协议再判断协议是否在白名单里;对文本,先统一做HTML实体解码再校验;对style这类较复杂的内容,拆成CSS规则再逐条检查属性。只有理解浏览器在每一个上下文里“最终会解释成什么”,才能真正判断一段输入是不是安全。

2.3 mXSS:跨解析器的“变异”绕过

mXSS 是富文本编辑器场景里最值得单独讲的一类。名字叫“变异XSS”,原理是:服务端用一套解析器过滤内容,浏览器用另一套解析器渲染内容,两套解析器对某些畸形HTML的解析结果不一致。攻击者构造一段在过滤解析器眼里“安全无害”的HTML,但到了浏览器DOM解析阶段,它会被重新组合成一个可执行的标签。

举个思路层面的例子:某些元素(比如注释标签、noscript、style、svg 的内部文本)在过滤器中会被当成普通文本,但浏览器处理时会把内容按HTML解析。如果攻击者能在这些位置里塞入“看起来是文本、实际会被浏览器识别为标签闭合”的字符串,就可能让过滤后的内容在渲染时产生一个崭新的<img onerror>或<script>。

防御mXSS有两个办法:一是使用基于浏览器DOM环境构建的净化库,保证“净化用的解析器”和“渲染用的解析器”是同一个,从根上消除解析差异;二是在服务端净化完成后,再做一次“序列化 -> 重新解析 -> 再序列化”,让变异在入库前就被“拍平”。很多生产事故都是因为只做了“正则过滤+简单净化”,没有做二次解析,导致非常规payload一直存活在线上。

2.4 上传、粘贴、导出:富文本组件的边缘攻击面

很多开发者只检查编辑器主输入框,却忽略了组件周边的功能:

  • 图片或附件上传:业务上需要允许上传图片,但如果上传接口不校验文件内容,攻击者传一个包含脚本的SVG文件,再通过编辑器插入。SVG被当成图片展示时可能执行其中脚本,这是上传与富文本结合的常见绕过。
  • 粘贴Word/网页内容:从剪贴板粘贴过来的HTML往往带着大量内联样式和Office命名空间标签,过滤逻辑一旦处理不到位,就会在粘贴内容里混入事件属性。我甚至见过某个系统,粘贴功能完全跳过了后台净化逻辑。
  • 导出与打印:编辑器带“导出HTML”“导出PDF”功能时,导出的模板往往是新组装的一段HTML,没走原保存链路。攻击者如果在编辑器源码模式里塞入恶意代码,导出页面就可能成为独立的XSS入口。

所以甲方在做安全评审时,不能只review“保存接口”,要把上传接口、导出功能、粘贴处理逻辑、历史内容迁移脚本全部纳入检查范围。攻击面不是编辑器本身,而是“编辑器周围一整圈数据通道”。

3. 甲方防御落地方案

3.1 选型评审:尽量用成熟组件,不做自研“简易过滤器”

甲方常见的错误是业务同事一句“我们自己写个简单编辑器,反正就几个按钮”,然后开发用contenteditable拼了一个。这种自研编辑器通常只做了很浅的字符过滤,对mXSS、编码绕过基本没有抵抗力。我的建议是:除非团队有专业的浏览器解析器经验,否则别自研。

选型时也不是“用最流行的组件”就完事,要评估几点:

  • 默认是否自带净化能力,HTML源码模式是否开放。
  • 组件的已知漏洞修复频率与维护活跃度。
  • 是否支持配置“标签/属性白名单”,能否在提交前端强制走净化。
  • 是否容易和后端净化逻辑配合,避免编辑器自行生成不规范的HTML。

另外,所有业务线使用的编辑器组件版本应该统一管理,形成资产清单。版本差异最大的问题不是功能不一致,而是老版本漏洞无人维护。上线后发现某个老编辑器出了公开漏洞,却因为业务定制过多没法快速升级,这种场景在甲方太常见了。

3.2 核心防线:后端白名单净化加二次解析

无论前端怎么拦截,后端在入库前都必须做一次独立的、严格的净化。具体落地我按步骤走一遍:

  1. 配置白名单:明确允许哪些标签,每个标签允许哪些属性,哪些属性允许哪些协议。宁可让业务方吐槽功能受限,也不要轻易放开。
  2. 解析并构建DOM:用成熟的HTML解析器把内容解析成树结构,不要用正则做标签替换。
  3. 按标签白名单过滤:不在白名单里的标签连同其内容一起删除,而不是只删标签本身。标签内容里的脚本经常被忽略。
  4. 属性级过滤:对允许的标签,逐个检查属性名。事件属性(on*)一律移除;src、href、action等URL属性只允许白名单协议。
  5. 清理危险内容:style属性与<style>标签要按CSS规则过滤,去掉expression、url(javascript:)、@import等危险值。
  6. 二次解析:对净化后的字符串再做一次“解析-净化-序列化”,把潜在的mXSS变异在入库前处理掉。
  7. 入库前校验:设定标签和属性数量上限,如果净化后的结果与白名单冲突,直接拒绝请求并记录告警。

这七步缺一不可,但前四步是大多数系统已经具备的,第五、六步才是真正拉开差距的地方。如果团队不想自己维护这么一套逻辑,建议直接使用成熟的开源HTML净化组件,在初始化时配置好你的业务白名单就行。净化逻辑不要跟业务代码耦合,越独立越好,这样可以整体复用。

配合一个伪代码示例,方便理解整体结构:

// 伪代码示例:白名单净化配置 const allowedTags = ['p','br','strong','em','u','ul','ol','li','blockquote','img','a','span']; const allowedAttrs = { a: ['href','title'], img: ['src','alt','width','height'] }; const allowedProtocols = ['http','https','mailto']; function sanitizeHTML(input) { // 1. 解析成DOM // 2. 按allowedTags过滤 // 3. 属性与协议校验 // 4. 序列化后再做一次解析 // 5. 返回安全HTML }

实际工程里还要考虑更多细节,比如<a>的target属性、图片的懒加载属性、表格标签等。核心原则是“默认拒绝,显式允许”,而不是“默认允许,见到危险才拒绝”。

3.3 纵深防御:CSP、Cookie、下载策略一起上

净化做得再好,也不能保证未来不出新的绕过技巧,所以纵深防御是甲方必须做的。几个高收益配置:

  • CSP:给所有渲染富文本内容的页面加Content-Security-Policy响应头。最少要做到script-src不包含'unsafe-inline'和'unsafe-eval',在需要内联脚本的地方用nonce或hash白名单。这样即使某段富文本内容里混入脚本,浏览器也会拒绝执行。
  • object-src 'none'、base-uri 'self'、frame-ancestors 'self'也都是低成本的加固项,能直接卡住部分老式payload。
  • Cookie加上HttpOnly,让XSS即使发生也拿不到用户会话;敏感操作再加二次验证,降低被劫持的收益。
  • 涉及文件预览的链接,对SVG、HTML这些“能执行脚本”的类型,强制用Content-Type: application/octet-stream和Content-Disposition: attachment,让它们直接被下载而不是在浏览器里执行。
  • 第三方外链资源(视频、外链图片)尽量走rel="noopener noreferrer",有条件的话用白名单域名限制,减少恶意站点的利用。

纵深防御的核心思想很简单:即使某一层被绕过,还有另一层兜底。CSP、HttpOnly、下载策略三个措施叠加,大多数富文本XSS即便打进来,也只是“脚本没执行成功”的结果,运营损失会小很多。

3.4 自动化用例库:让测试用例成为常态机制

很多甲方安全测试处于“上线前请人测一轮”的阶段,测完就归于平静,新版本上线后旧洞复发也没人知道。我的做法是把富文本XSS测试用例沉淀成用例库,并接到发布流程里。

用例库建议覆盖四类:

  • 标签与事件类:script、img onerror、svg onload、iframe srcdoc、a href=javascript等基础payload。
  • 编码与协议类:大小写混写、HTML实体、URL编码、JS转义、data协议。
  • mXSS变异类:针对当前使用的编辑器和渲染方案,收集公开的mXSS变体放入用例。
  • 业务场景类:粘贴、拖拽上传、源码模式、导出功能,每种入口都要有一条对应用例。

落地时不需要每次都人工点页面,用浏览器自动化工具加载一个包含富文本渲染的测试页,填入payload,断言是否出现弹窗或网络请求外联。接入CI后,组件升级、代码变更都会自动跑一遍,基本能拦住90%的回归问题。剩下的10%,靠人工测试去补充交互层面的用例。

4. 我实际踩过的坑

4.1 白名单里多了一个style属性,后台被打穿

某系统的后台商品编辑功能,商品详情允许插入图片并要求支持图片宽高设置。开发为了让图片支持自定义圆角,给img标签加了一个style属性。就是这么小的改动,安全测试时发现可以构造style="width:expression(alert(1))"这样的老式CSS表达式在部分浏览器下触发,也可以把style写成background:url("javascript:...")的形式尝试绕过。虽然新浏览器对这些向量已经不敏感,但组织里仍然有老版本浏览器在跑,保险起见必须把style属性做成CSS级白名单,而不是简单放行。

教训是:白名单的每一次“放松”,都需要做一次完整的风险评审。安全工程师看到“加一个style属性”这种需求,不能只从HTML角度考虑,要从“这个属性可以被哪些浏览器解释成什么”的角度考虑。

4.2 历史数据迁移引出的“存量型”XSS

一次内容平台改版,团队要把老系统里的文章迁移到新系统。老系统几年来的富文本内容都没有经过严格过滤,新系统的净化逻辑只对新写入内容生效。迁移脚本跑完后,测试发现某个老文章里嵌着一段伪装成普通文字的<svg onload>,上线后直接成了存储型XSS爆发点。

修复办法是补了一个“历史内容清洗任务”,把所有存量数据重新过一遍新净化逻辑。但更值得反思的是,这种问题在项目排期里经常被遗漏。数据迁移、数据清洗、二次渲染这类“看起来没有新功能”的环节,恰恰是安全加固最容易被跳过的地方。甲方做项目评估时,要把存量数据的清洗和验证纳入安全验收范围。

4.3 WAF正则误伤与失效的“双重翻车”

某次业务侧反馈大量正常文章无法保存,排查发现安全团队在WAF上加了一条“包含<script就拦截”的规则。文章作者经常在技术文档里粘贴代码示例,只要里面出现<script>字样就被拦。而真正的攻击者用%3Cscript%3E编码或img事件属性轻松绕过。

这件事给我的经验是:WAF规则可以对已知攻击做“检测和告警”,但不要指望它成为唯一防线;像XSS这种上下文差异极大的漏洞,最终靠的还是应用层的白名单净化。WAF更适合做“暂时没有修好漏洞时的临时缓解”,而不是永久方案。防御层之间要有清晰的职责划分,避免“大家都以为对方在管,最后没人管”。

5. 常见问题与排查技巧实录

5.1 编辑器升级后,视频嵌入功能失效了

升级编辑器组件后,业务发现后台插入视频的功能无法保存。排查发现新版组件默认移除了对iframe标签的支持,而原来的视频嵌入正是基于iframe实现的。这不是组件坏了,是安全基线更严了。

处理办法是:给可信的视频域名单独配置白名单,只允许特定域名的iframe,并加上sandbox属性限制脚本权限。不要为了功能把iframe全场放开。这里的关键是“为业务开一个受控的口子”,而不是“推翻安全策略”。

5.2 扫描器报0漏洞,人工一测就中

通用漏洞扫描器在富文本XSS上效果有限,因为它通常是发送一个HTTP请求看响应,而富文本XSS需要模拟登录、编辑、保存、再渲染整个链路,扫描器很难构造出这种有状态的操作。真正有价值的自动化是“浏览器自动化用例”,它执行的是和用户一致的渲染环境。

我平时会保留一组“交互用例”:用带登录态的浏览器,进入内容编辑页 -> 粘贴payload -> 保存 -> 打开预览页 -> 断言是否弹窗。这套用例成本不算高,但比纯扫描器靠谱得多。

5.3 线上发现漏洞,止损流程应该怎么走

如果线上已经发现富文本XSS被利用,我的建议顺序是:

  1. 先评估影响:查看存储内容里有没有异常脚本,翻访问日志和管理员操作日志。
  2. 临时止血:关闭富文本编辑入口或改成维护模式;先别急着删数据,保留现场用于分析。
  3. 渲染层兜底:在输出页面临时加一层净化处理,对存量内容统一清洗,这是对已存储恶意内容最直接的处理。
  4. 修复源头:补后端净化逻辑和组件版本。
  5. 复盘并补用例:把这次触发的payload加入用例库,防止回归。

这里容易犯的错是“只加WAF规则就宣布修好了”。WAF对存储型XSS并不友好,历史恶意内容在渲染时还是可能绕过规则,必须在输出页面或数据层面做处理才算闭环。

甲方安全建设和乙方渗透测试最大的区别,是你不能只发现漏洞,还要让修复长期有效。富文本编辑器XSS绕来绕去,说到底就是“允许执行HTML的白名单边界”没有守住。我个人这两年体会最深的一件事是:把白名单净化、组件统一管理、CSP、自动化用例四件事做成机制,而不是依赖某个人的临时检查,团队的稳定性会高很多。哪怕未来又出现新的mXSS变体,每一层纵深都有足够的余地去缓冲。最后再说一句实用建议:每次修改编辑器相关配置,哪怕只是加一个属性,都值得跑一遍完整的XSS用例库,成本几分钟,但能帮你避开很多线上事故。

相关新闻

netconfig实战:SUSE系网络配置生成器与ifcfg文件详解

netconfig实战:SUSE系网络配置生成器与ifcfg文件详解

1. netconfig命令到底是干什么的&#xff1a;它不是ifconfig的替代品很多人第一次看到netconfig&#xff0c;会下意识觉得它跟ifconfig、ip addr是一类东西——都是用来配IP的。这个理解不能说全错&#xff0c;但偏差很大。如果你把netconfig当成“改IP的工具”去用&#xff0c…

2026/10/20 14:22:36 阅读更多 →
AI Agent面试分水岭:任务规划、状态管理与长任务恢复实战

AI Agent面试分水岭:任务规划、状态管理与长任务恢复实战

1. 为什么任务规划是AI Agent面试的分水岭面试过几十个做Agent方向的候选人之后&#xff0c;我发现一个很明显的规律&#xff1a;聊ReAct、聊Function Calling、聊Prompt Engineering&#xff0c;大部分人都能说上几句&#xff0c;但一旦把话题切到“任务规划、状态管理、长任务…

2026/10/20 14:22:36 阅读更多 →
HBase从安装到调优:大数据实时读写实战全记录

HBase从安装到调优:大数据实时读写实战全记录

如果你正在搭数据平台&#xff0c;或者刚接手一套离线数仓又接到一个“实时读写”的需求&#xff0c;HBase迟早会出现在你面前。它能撑千万级QPS、百TB级数据量&#xff0c;还带列族设计&#xff0c;这个面子工程确实不好绕开。这篇东西不是官方文档翻译&#xff0c;是我在一台…

2026/10/20 14:22:36 阅读更多 →

最新新闻

LeRobot定位解析:端到端策略学习与ROS2的边界

LeRobot定位解析:端到端策略学习与ROS2的边界

刚接触LeRobot那会儿&#xff0c;我也和大多数朋友一样&#xff0c;下意识以为它是又一个机器人操作系统&#xff0c;能对标ROS2&#xff0c;甚至还想拿它去做导航和路径规划。后来把这套框架真正跑起来才发现&#xff0c;这玩意儿压根不干那些活&#xff0c;它的主业是把“感知…

2026/10/20 15:08:45 阅读更多 →
PPT自动化生成:内容与模板分离的工程化实践

PPT自动化生成:内容与模板分离的工程化实践

1. 项目缘起与整体设计思路 第一次看到“ppt-master”这个命名&#xff0c;我脑子里蹦出来的不是某个具体工具&#xff0c;而是一类非常典型的需求&#xff1a;把做PPT这件事从“手工活”变成“可复用、可批量、可版本管理”的工程化流程。市面上讲PPT技巧的内容多如牛毛&#…

2026/10/20 15:08:45 阅读更多 →
从均值-方差到风险平价:资产配置与组合优化模型实战

从均值-方差到风险平价:资产配置与组合优化模型实战

做了一年多的智能投顾项目&#xff0c;我最常被问的一句话是&#xff1a;“你这个模型能预测明天哪只股票涨吗&#xff1f;”每次我都得解释半天——智能投顾的核心从来不是择时也不是选股&#xff0c;而是资产配置。标题里的“资产配置与组合优化模型”&#xff0c;本质上就是…

2026/10/20 15:08:45 阅读更多 →
GPT-6 与 DeepSeek 自适应限流调度:基于突发请求熵增的平滑漏斗设计

GPT-6 与 DeepSeek 自适应限流调度:基于突发请求熵增的平滑漏斗设计

在构建支持 GPT-6 与 DeepSeek 混合推理的异构 AI 调度集群时&#xff0c;高并发限流算法常常面临失效的窘境。传统微服务架构中广泛使用的单维度令牌桶&#xff08;Token Bucket&#xff09;或滑动窗口计数器&#xff0c;其核心假设是“请求是同质的”——即单次 RPC 请求消耗…

2026/10/20 15:08:45 阅读更多 →
BCA六要素:把组织经验注入AI系统的落地实践

BCA六要素:把组织经验注入AI系统的落地实践

做AI落地最头疼的其实不是模型选型&#xff0c;也不是算力成本&#xff0c;而是怎么让系统真正继承团队里那些“只可意会不可言传”的组织经验。拿业务部门最常见的场景来说&#xff1a;同样一笔异常交易&#xff0c;新员工查了三套规则文档还是不敢判断&#xff0c;老员工瞟一…

2026/10/20 15:08:45 阅读更多 →
数据库慢排查实战:五步定位慢查询与锁等待问题

数据库慢排查实战:五步定位慢查询与锁等待问题

数据库又慢了。后台报警刷屏&#xff0c;接口超时&#xff0c;前端白转圈&#xff0c;老板在群里问“怎么回事”&#xff0c;你打开终端&#xff0c;脑子一片空白——这种情况干过线上运维的人都不陌生。数据库慢是一个现象&#xff0c;不是结论&#xff0c;你不可能听它说“我…

2026/10/20 15:07:44 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

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

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

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

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

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

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/20 9:50:45 阅读更多 →