QA 与发布保障

代码审计与审查

对您代码库的独立审查,无论它是由人编写还是用 AI 工具生成。我们查找安全缺陷、脆弱的设计和技术债务,并为您提供一份经过优先级排序的修复计划。

团队何时会寻求审计

你必须决定是在某个代码库之上继续构建、先把它修好,还是替换其中的部分,而没有一位独立人士足够仔细地读过它来给你答案。

  • 正在从某家代理机构、自由职业者或即将离职的开发者手中接管代码的团队
  • 在达成交易前需要独立技术视角的投资者或收购方
  • 在一个大部分由 AI 工具编写的代码库上招聘首批工程师的创始人

审查关注哪些方面

面向 Web 代码库的典型审查领域;每一项的深入程度取决于我们商定的范围。

  • 架构与代码健康状况

    • 业务规则存在于何处,以及各模块之间如何相互依赖
    • 跨文件和服务的重复或相互矛盾的规则
    • 关键规则的测试在该规则被破坏时是否会失败
    • 错误路径:超时、重试,以及调用失败时会发生什么
  • 源代码中的安全性

    • 是否每个路由、处理程序和后台任务都检查授权
    • 追踪不可信输入进入查询、模板、文件路径和 shell 调用的情况
    • 代码、配置文件和代码仓库历史中的密钥
    • 个人数据泄露到日志、错误消息和分析事件中的情况
  • 交付与依赖项

    • 无人刻意选择的软件包,包括 AI 工具添加的那些
    • 已知漏洞、已停止维护的库以及许可证义务
    • 构建、CI 和部署脚本,以及一次发布如何回滚
    • 数据库迁移和各环境的配置

了解您在什么基础上构建

您可能正在接手一个代码库、面临技术尽职调查、准备一次重大发布,或是交付用 AI 工具快速生成的代码。每一次,您都需要知道自己在什么基础上构建。我们的工程师审查架构、安全、性能、测试和依赖项,并针对每项发现说明其业务风险和建议的修复方案。对于 AI 生成的代码,我们会在它进入生产环境之前,查找这类工具往往会遗留下来的特定问题。

AI 辅助分析,工程师验证的发现

AI 如何协助

  • 快速梳理大型代码库:模块、数据流、入口点,以及敏感数据在何处被处理。
  • 运行并分类处理静态分析、依赖项和密钥扫描,将重复项和可能的误报归类。
  • 一旦发现某个模式(例如缺失的授权检查),便在整个代码库中搜索它。
  • 起草发现说明和修复示例,供工程师验证和编辑。

我们的专家负责什么

  • 每项发现都经工程师结合上下文确认后才会写入报告。未经验证的工具输出不会。
  • 架构建议会权衡您的团队、路线图和约束,而不仅仅是模式规则。
  • 严重程度反映业务影响和可利用性,而不是工具的默认评分。
  • 修复计划按风险和工作量排序,并解释其中的权衡取舍。

您将获得什么

清晰呈现您的代码状况以及应优先修复什么

  • 架构与可维护性

    结构、耦合、重复、关键逻辑的测试覆盖率和文档缺口,并提供契合您路线图的建议,而不是默认的重写。

  • 安全代码审查

    注入、身份验证、授权、密钥处理和输入验证,对照 OWASP 指南进行审查。只报告已确认的发现。

  • AI 生成代码审查

    检查重复的逻辑、不一致的验证、缺失的访问检查、未处理的错误、未经审查的依赖项,以及几乎什么都没断言的测试。

  • 性能与可靠性

    重复的数据库调用、阻塞操作、缺失的超时设置,以及在负载下导致变慢和失败的薄弱错误处理。

  • 依赖项与许可证审计

    过时的软件包、已知漏洞和许可证义务,并附带一份标注出破坏性变更的更新计划。

  • 经过优先级排序的发现报告

    每项发现都附有证据、严重程度、业务影响和带代码示例的建议修复方案,外加一份面向决策者的摘要。

代码审计如何进行

  1. 01

    范围与背景

    商定目标、关注领域与访问权限。与你团队的简短交流会涵盖业务优先级、历史情况和已知痛点。

  2. 02

    自动化分析

    静态分析、依赖项与密钥扫描会在 AI 辅助分诊下运行,并生成一张代码库地图,显示最需要人工审查的地方。

  3. 03

    专家审查

    工程师会阅读关键路径,核实每一项发现,按业务影响评定严重程度,并编写附带代码示例的修复指导。

  4. 04

    讲解与计划

    我们会向你的团队讲解各项发现、解答问题,并商定一份整改计划;如果你愿意,我们也会协助完成修复。

使用 AI 工具的两种方式

AI 协助起草测试并调查缺陷。选择它可以在何处处理您的代码和测试数据。

不确定?我们会在界定范围时为您推荐一个。 比较 AI 交付选项

典型的审计请求

我们所界定范围的典型场景,而非客户案例研究。

  • 重构、重建,还是继续扩展

    一位 CTO 必须在扩展一个脆弱的代码库和重建其中部分之间做出选择。我们会审查结构、围绕核心业务规则的测试以及依赖项健康状况,然后列出各个选项及其风险;决定权在他们手中。

  • 一次借助 AI 工具完成的计费系统重写

    某团队在一次重大发布前,在 AI 编码工具的大量协助下重写了其计费逻辑。我们会审查改动过的模块,追踪金额、折扣和退款在其中如何流转,并标记出在发布前需要测试的路径。

  • 投资前的技术尽职调查

    一位投资者希望在投入资金前对一家初创公司的代码库有独立的了解。在商定的范围内,我们会评估架构、安全性和依赖项风险,并撰写一份非工程师也能据以行动的摘要,并附上技术细节。

审计不包含哪些内容

  • 我们阅读和分析代码,而非运行中的系统;实时攻击测试属于 Penetration Testing 或 API Security。
  • 产品是否满足用户需求,由 Software QA & Testing 来测试;审计报告的是代码中哪些地方容易产生缺陷。
  • 流量下的真实响应时间由 Performance Testing 测量;审计指出代码中可能的原因。
  • 许可证方面的发现是技术性标记,而非法律建议;最终判断由你的律师做出。

审计如何与设计、QA 和运维相衔接

  • 设计:前端一致性

    前端代码会接受可访问性问题检查,以及与你的设计系统出现偏差的检查。会改变使用体验的修复须与设计师达成一致。

  • QA:针对修复的回归测试

    每个已确认的问题都会获得一个回归测试,这样后续由人或 AI 工具做出的更改就不会悄悄让它重新出现。

  • 运维:配置与部署

    密钥、配置、日志和部署脚本会与代码一同审查,运维风险会交给负责生产环境运行的人。

  • 持续进行:边交付边审查

    对高风险或 AI 生成的拉取请求进行定期审查,使新代码保持在审计所设定的标准上,并依据与你商定的计划执行。

常见问题

常见问题解答

一次代码审计需要多长时间?

这取决于代码库的规模、纳入范围的领域以及审查需要达到的深度。在对代码仓库做初步查看之后,我们会在审计开始前与你商定固定的范围和时间表。

你们能在 AI 生成的代码进入生产环境之前进行审查吗?

可以。我们会像审查任何其他代码一样审查它,并额外进行针对性检查,以应对生成代码可能引入的问题:逻辑重复、校验不一致、缺失访问检查、凭空编造或未经审核的依赖项,以及只验证代码本身而非需求的测试。这可以是一次性的审计,也可以是对拉取请求的定期审查。

你们能帮忙实施修复吗?

可以。我们的工程师可以直接修复高优先级问题、与你的团队协同工作,或审查你的修复拉取请求。每项修复都会经过核实,并在可行的情况下由一个回归测试覆盖。

你们需要哪些访问权限,我们的代码在哪里处理?

通常只需对代码仓库和文档的只读访问权限;很少需要生产环境访问权限。AI 辅助分析仅在你选择的边界内运行:使用 私有 / 本地 AI 工程 时,模型在你控制的基础设施上或在我们商定的隔离环境中运行;使用 Claude Code / OpenAI Codex 工程 时,商业提供商会在商定的数据处理与保留条款下处理代码。

相关阅读

如实了解你的代码

告诉我们这些代码做什么、是如何构建的,以及你需要做出什么决定。我们会提出相应的审计范围建议。