作者:Kedasha Kerr
排版:Alan Wang
学习如何使用 GitHub Advanced Security 保护你的项目,并确保它们的安全性。
欢迎回到《GitHub 初学者指南》第三季!
到目前为止,今年我们已经介绍了 GitHub Issues 和 Projects,以及 GitHub Actions。这一次,我们将稍微讨论一下安全性,以及 GitHub 提供了哪些工具来帮助你确保代码的安全。在本文结束时,你将了解如何使用内置工具(例如密钥扫描、Dependabot、代码扫描和 Copilot Autofix)来修复你仓库中的漏洞。
GitHub Issues 和 Projects
https://youtu.be/c67GaAkf1BE?si=gQm38vCKp0S8y66C/?wt.mc_id=3reg_webpage_reactor
GitHub Actions
https://www.youtube.com/watch?v=BQrohJ3PT7I/?wt.mc_id=3reg_webpage_reactor
为什么安全性很重要
漏洞是你代码或所使用库中的弱点,攻击者可以利用这些弱点。需要意识到,一旦你将某个库导入到项目中,你就继承了该库的所有风险,即使这些存在漏洞的代码并不是你自己编写的。这就是为什么即使是很小或全新的项目也可能存在漏洞——几乎所有软件都依赖第三方包。
GitHub 通过 GitHub Advanced Security(GHAS)让发现和修复这些问题变得前所未有的简单,这是一个帮助你提升并维护代码质量的产品套件。在公共仓库中,你可以使用 Dependabot、代码扫描、密钥扫描和 Copilot Autofix。如果你想了解更多不同功能,可以查看我们关于 GHAS 的文档。或者继续阅读,我们将带你逐步了解如何启用和使用其中的一些功能。
GitHub Advanced Security(GHAS)
https://github.com/security/advanced-security?utm_source=blog-episode-3&utm_medium=blog&utm_campaign=gfb-s3-2026/?wt.mc_id=3reg_webpage_reactor
关于 GHAS 的文档
https://docs.github.com/get-started/learning-about-github/about-github-advanced-security?utm_source=blog-episode-3&utm_medium=blog&utm_campaign=gfb-s3-2026/?wt.mc_id=3reg_webpage_reactor
启用安全功能
第一步是确保 GHAS 已开启。
进入你的仓库。
Settings页签。
在左侧栏中 “Security” 下选择 Advanced Security。
在 “Dependabot” 下,启用 “Dependabot alerts” 和 “Dependabot security updates”。
向下滚动到 “Code scanning” 部分。
对于 “CodeQL analysis”,选择 Set up,然后在上下文菜单中选择 Default。
会出现一个新窗口。选择 Enable CodeQL,无需更改任何设置。
向下滚动到 “Secret Protection” 并启用它。
这些工具默认在公共仓库中可用。如果你有私有仓库,则需要 GHAS 许可证。在窗口顶部选择 Security 页签,进入该仓库的安全主页。在这里,你将看到你已启用的各种 GHAS 工具选项。你可以在这里查看暴露的密钥、存在漏洞的依赖项以及存在风险的代码路径的警报。现在让我们更详细地看看这些工具。如果你想查看各种警报的显示方式,请记住我们还提供了本文的在线视频版本。
本文的在线视频版本
https://youtu.be/zhxXaFzzJYA?si=2IQ2lHHNFyEEjguH/?wt.mc_id=3reg_webpage_reactor
使用密钥扫描
GitHub 可以通过密钥扫描帮助你保护敏感信息。如果你不小心提交了 API key 或 token,密钥扫描会在左侧栏的 Security 标签下的 Secret scanning中标记出来。当你看到警报时,点击具体警报的标题,可以查看检测到的密钥以及它出现的位置。
解决该暴露密钥的一种方法是将其撤销。撤销密钥意味着禁用旧的密钥,使其无法再被使用。通常你需要在该密钥所属的平台上生成一个新密钥,例如 Azure 或 Stripe。
GitHub 无法自动为你撤销密钥。这一步需要你自己完成。不过,密钥扫描会提供早期预警,避免泄露的密钥被真正利用。
在你撤销密钥后,可以通过以下步骤关闭该密钥扫描警报:
在窗口右上角选择 Close as。
在上下文菜单中选择 Revoked。
点击上下文菜单底部绿色的 Close alert按钮。
什么是 Dependabot?
Dependabot 是一个代码扫描工具,帮助你保持依赖项为最新状态。还记得我们之前提到的,你会继承项目中引入的每个库的漏洞吗?Dependabot 通过在发现项目依赖库存在漏洞时发出警报来帮助解决这个问题。
要查看 Dependabot 警报,请返回到仓库中的 Security页签。当你点击某个 Dependabot 警报时,它会带你进入对应的 pull request,以便你更新你的库。在 pull request 页面中,如果向下滚动,你可以通过选择 GitHub Advisory Database中的 See advisory查看触发警报的具体安全公告。
在 pull request 页面顶部,点击绿色的 Review security update按钮来审查版本更新。在合并建议更改之前,你应该始终进行审查。如果一切看起来都没问题,就可以继续合并该 pull request。
Dependabot 会自动将 GitHub 安全公告转化为 pull request,这样你就不需要手动跟踪常见漏洞与暴露。
准备好进阶了吗?
前往 GitHub Skills,尝试一些挑战,了解更多关于 GitHub Advanced Security 的内容并提升你的技能。这些挑战是一种有趣且互动的学习安全知识的方式!
密钥扫描入门
https://github.com/skills/introduction-to-secret-scanning?utm_source=blog-episode-3&utm_medium=blog&utm_campaign=gfb-s3-2026/?wt.mc_id=3reg_webpage_reactor
保护仓库的供应链安全
https://github.com/skills/secure-repository-supply-chain?utm_source=blog-episode-3&utm_medium=blog&utm_campaign=gfb-s3-2026/?wt.mc_id=3reg_webpage_reactor
CodeQL 入门
https://github.com/skills/introduction-to-codeql?utm_source=blog-episode-3&utm_medium=blog&utm_campaign=gfb-s3-2026/?wt.mc_id=3reg_webpage_reactor
你还可以查看 vulnerable-node仓库,以获得更多使用这些工具的实践经验。
vulnerable-node
https://github.com/cr0hn/vulnerable-node?utm_source=blog-episode-3&utm_medium=blog&utm_campaign=gfb-s3-2026/?wt.mc_id=3reg_webpage_reactor
响应 CodeQL 警报
CodeQL 是用于扫描代码并生成代码扫描警报的引擎(你可以在 Security 页签下找到这些警报)。CodeQL 并非代码扫描工具。它更强大,因为它能够理解数据流,展示输入从哪里开始以及最终流向哪里。
因此,代码扫描警报可以覆盖广泛的潜在场景。当你选择一个代码扫描警报时,它会解释问题,并在可能的情况下提供额外信息,例如修复建议以及示例,用来说明问题和可能的解决方案。
当你理解了警报之后,可以通过以下步骤使用 Copilot Autofix来解决问题:
在警报顶部选择 Generate fix按钮。
Copilot 会建议一个补丁。审查更改并确认它满足你的需求。
点击底部绿色的 Commit to new branch按钮。
在新的弹出窗口中,选择 Open a pull request选项,然后点击 Commit change。
像处理任何其他 pull request 一样处理这个自动生成的 pull request:进行审查并合并更改。请记住,虽然 Copilot 可以加速安全修复,但整个过程始终由你掌控。
Copilot Autofix
https://docs.github.com/code-security/responsible-use/responsible-use-autofix-code-scanning?utm_source=blog-episode-3&utm_medium=blog&utm_campaign=gfb-s3-2026/?wt.mc_id=3reg_webpage_reactor
接下来
恭喜!你现在已经学会如何使用 GitHub Advanced Security 来自信地检测并修复代码中的漏洞。公共仓库可以免费使用这些 GHAS 工具,因此你可以从一开始就保护你的项目安全。你可以随时通过 GitHub Skills 或 ‘vulnerable-node’ 仓库来测试你的技能。
如果你想获取更多信息,我们还提供了大量文档。以下是一些可以帮助你入门的链接:
关于密钥扫描
https://docs.github.com/code-security/concepts/secret-security/about-secret-scanning?utm_source=blog-episode-3&utm_medium=blog&utm_campaign=gfb-s3-2026/?wt.mc_id=3reg_webpage_reactor