Cyber Security Academy · 课时

安全代码审查技术

在代码审查中识别安全问题:数据流、信任边界、危险 API 和缺失的控制措施。

第 4 / 4 课13 个步骤

安全代码审查技术 是 CoddyKit 上的免费 Cyber Security Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cyber Security Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cyber Security Academy 课程共包含 4 节课。

安全代码审查的目标

安全代码审查可在部署前识别源代码中的安全漏洞。与功能代码审查不同,它关注信任边界、数据流、危险 API、缺失的控制措施和安全逻辑错误,而不是正确性或代码风格。

手动审查与自动化审查

自动化 SAST 工具(Semgrep、SonarQube、CodeQL)可以快速发现已知模式,但会遗漏业务逻辑缺陷、复杂的多组件漏洞以及依赖上下文的问题。手动审查可以发现自动化工具遗漏的问题。两者缺一不可。

入口点分析

开始安全审查时,请先梳理所有入口点:HTTP 端点、消息队列处理程序、文件上传、计划任务、网络钩子和 CLI 参数。每个接受外部数据的入口点都可能是需要仔细审查的注入点。

数据流追踪

请从入口点开始,追踪用户可控数据在应用中的流转,直到其最终使用位置。它是否会进入数据库查询?Shell 命令?HTML 模板?API 调用?请跟踪数据流,并检查每个转换和清理步骤。

信任边界分析

安全决策发生在信任边界处,也就是数据从不太可信的上下文(HTTP 请求)进入更可信的上下文(数据库、操作系统)的地方。每次跨越信任边界时,都必须验证、清理或授权数据。

危险 API 检查清单

请标记以下用法:eval()、exec()、system()、shell_exec()、innerHTML、dangerouslySetInnerHTML、deserialize()、pickle.loads()、Runtime.exec()、ProcessBuilder、未禁用实体扩展的 XML 解析器,以及直接使用加密原语而不是高级 API 的情况。

身份验证与授权审查

请检查:每个敏感端点是否都受到身份验证保护?是否在服务器端为每个操作检查授权?用户能否通过更改 ID 参数访问其他用户的数据(IDOR)?敏感操作是否受到 CSRF 保护?

错误处理审查

请查找静默吞掉异常的 catch 代码块。请确认向用户显示的错误消息不会透露内部路径、堆栈跟踪或数据库结构。请验证安全异常(AuthenticationException)已被记录,而不是被悄悄忽略。

密码学审查

请标记以下问题:使用 MD5 或 SHA-1 进行密码哈希(应使用 bcrypt 或 Argon2)、硬编码的对称密钥或 IV、使用 ECB 模式加密(应使用 GCM,或使用带 HMAC 的 CBC)、自定义密码学实现,以及不具备密码学安全性的随机数生成器。

依赖项与配置审查

请审查 package.json/pom.xml,检查是否存在过时的依赖项。请检查应用配置中是否在生产环境启用了调试模式、是否存在详细错误页面、配置文件中是否包含管理员凭据,以及是否缺少安全标头(HSTS、CSP、X-Frame-Options)。

工具:Semgrep 与 CodeQL

Semgrep 规则可以在具备语义感知能力的情况下匹配语法模式。请针对代码库的特定模式编写自定义规则。CodeQL 将代码视为数据,您可以针对 AST 编写查询,跨文件和函数调用查找从数据源到数据汇的数据流。

知识检查

什么是 IDOR 漏洞,在代码审查中应在哪里查找它?

总结

有效的安全代码审查结合了入口点梳理、数据流追踪、信任边界分析、危险 API 检测和自动化 SAST 工具。它可以发现功能审查遗漏的安全问题,尤其是业务逻辑缺陷和隐蔽的授权漏洞。

免费开始

用 AI 导师学习 Cyber Security Academy — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
76
课程
303

常见问题解答

「安全代码审查技术」课时是免费的吗?

是的 — 「安全代码审查技术」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cyber Security Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cyber Security Academy 课程共包含 4 节课。

「安全代码审查技术」这节课中我会学到什么?

在代码审查中识别安全问题:数据流、信任边界、危险 API 和缺失的控制措施。 你通过在浏览器中直接运行的动手代码来练习 Cyber Security Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cyber Security Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cyber Security Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「安全代码审查技术」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cyber Security Academy 课中编写并运行代码吗?

能。每节 Cyber Security Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 输入验证与输出编码
  2. 安全的依赖项管理
  3. OWASP ASVS:应用安全验证标准
  4. 安全代码审查技术
← 返回 Cyber Security Academy