媒体架构问题:我是如何将八万行代码缩减至一千八百九十五行的

发布日期:2026-05-14 10:00:20   浏览量 :3
发布日期:2026-05-14 10:00:20  
3

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

不是重构。不是重写。而是重新思考。

而安全性的提升并非我预先计划的。它是正确思考问题后产生的结果。

在沉默中滋生的混乱

我们的平台处理所有类型的媒体文件。

用户头像。维护作业照片。租赁协议。检查报告。租务文件。合同文件。管理协议。入住状况报告。退租状况报告。

每一种都略有不同。有些允许多个文件。有些只允许一个。有些需要指定一张封面图片。有些需要排序。有些上传至文件传输协议(FTP)服务器。有些以画廊形式展示。有些以内嵌方式渲染为便携式文档格式(PDF)。有些生成安全下载链接。

在十多年的时间里,每一位接触到新媒体需求的开发人员都为此编写了新的代码。从来没有人停下来思考,在这些情况背后是否存在一个统一的本质。

当我仔细审视时,分散在代码库中的媒体处理代码已超过八万行。

但让我更为不安的并不是代码行数。

每位开发人员还编写了自己的验证逻辑。自己的文件类型检查。自己的大小限制。有些检查得当。有些检查不全。有些完全遗漏。有些仅在前端检查而未在后端检查。有些仅检查文件扩展名而未检查实际的文件签名。

八万行代码意味着存在八万个可能出现安全假设错误的地方。在一个为五万名用户处理法律文件和财务协议的平台上,这是不可接受的。

改变一切的问题

我并没有从查看代码开始。我从提出一个不同的问题开始。

不是“我们如何清理这些代码”,而是“在每一个案例中,实际上发生了什么?”

因此,我列出了系统中所有的媒体使用案例。全部列出。然后,我准确写下了它们之间的差异点。

以下是我的发现:

  • 允许的文件格式(仅限图像、文档或任何文件)
  • 最大文件大小(以兆字节为单位)
  • 允许单次上传还是多次上传
  • 是否可以将某个文件标记为封面
  • 是否可以手动重新排序文件
  • 文件的存储位置(本地、文件传输协议服务器、云端)
  • 文件的显示方式(画廊、单张图片、便携式文档格式阅读器、下载链接)
  • 下载是开放的还是通过令牌保护

仅此而已。八个要素。整个平台中的每一个媒体使用案例,仅仅是这八个要素的不同组合。

八万行代码。八个变量。

安全性洞察

当我写下这份清单时,令我震惊的是以下几点。

允许的文件格式和最大上传大小不仅仅是功能需求。它们是安全边界。而在旧系统中,这些边界存在于各个开发人员的实现中,分散在数十个文件中,由不同的人在不同时间以不同的严谨程度编写。

这是安全边界存在的最糟糕的位置。

当安全性依赖于代码时,其强度仅取决于最心不在焉的开发人员在状态最差时的表现。某人疲惫不堪,复制了一个模板,遗漏了文件类型检查,提交了代码,无人察觉,于是漏洞便静静地潜伏数月。

当安全性依赖于数据时,它由一个系统一致地强制执行,每次如此,涵盖所有案例,没有例外,也不依赖人的记忆。

因此,我做出的架构决策是:将安全边界完全从代码中移除,并放入数据库中。每种媒体类型都在单独的一行中定义其允许的格式和大小限制。组件读取 t

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部