本文翻译自《Security》。
此页面为Go开发人员提供一些资源,以提高Go项目的安全性。
(另请参阅:Go开发人员应该知道的Go项目安全最佳实践。)
查找并修复已知的安全漏洞
Go的漏洞检测旨在为开发人员提供低噪声、可靠的工具,以了解可能影响其项目的已知漏洞。有关概述,请从Go漏洞管理体系架构和常见问题页面开始。对于应用方法,请探索以下工具。
使用govulcheck扫描代码以查找漏洞
开发人员可以使用govulcheck工具来确定是否有任何已知的漏洞会影响他们的代码,并根据实际调用的有安全漏洞的函数和方法来确定下一步先做什么。
在编辑器中检测漏洞
VS Code Go扩展可以检查第三方依赖项并发现相关漏洞。
- VS Code Go扩展的文档
- 下载和安装VS Code Go扩展
- 教程:使用VS Code Go插件查找和修复可能有安全风险的依赖项
查找你的项目用到的Go模块
Pkg.go.dev是一个用于发现、评估和学习有关go包和模块的更多信息的网站。在pkg.go.dev上发现和评估go包时,如果该版本存在漏洞,你会在页面顶部看到一条横幅。此外,你可以在go包的版本历史页面上看到影响某个版本的它的安全漏洞有哪些。
浏览安全漏洞数据库
Go漏洞数据库直接从Go包维护者以及MITRE和GitHub等外部来源收集数据。报告由Go Security团队策划。
报告Go项目中的安全漏洞
有关如何报告Go项目中的安全漏洞的说明,请参阅Go安全策略。该文章还详细介绍了Go安全团队跟踪问题并向公众披露的过程。有关过去的修复安全漏洞的记录的详细信息,请参阅发布历史记录。根据发布策略,我们在Go包的两个最新主版本上进行安全修复。
使用模糊测试发现意外输入
Go原生提供的模糊测试是一种自动测试,它不断地往程序的入数据来发现Bug。从Go 1.18开始,标准工具链加入模糊测试工具。也可以使用OSS fuzz,它支持原生的Go模糊测试。
使用Go的加密库提供的安全服务
Go的加密库旨在帮助开发人员构建安全的应用程序。请参阅有关加密的Go包和golang.org/x/crypto/的文档。