经常有人问我关于影子 API 和影子 API 参数的问题--即使是在 API 开发领域拥有丰富经验的人也不例外。这并不奇怪,因为在开发 API 的正常过程中,你通常不会想到影子 API 的风险。事实上,有些人确信,影子 API 其实只是安全厂商用来推销其工具的一种恐吓策略。
但实际上,影子应用程序接口的构建和使用相对简单。怎样才能更好地了解它们呢?通过观察现实世界中的例子!这就是我们将在本篇文章中介绍的内容。
什么是影子 API?
让我们从我遇到的这个应用程序接口请求示例开始:
这是一个向 GraphQL API 提出的请求,用于生成网络服务身份验证中使用的一次性口令 (OTP)。如果不仔细看,您可能不会发现这个问题,所以我用一个大红箭头标记了它。这个 otpDigit
参数实际上是一个大问题。
我发现这个参数实际上可以通过 API 进行修改。通过修改它,可以调整身份验证所需的一次性密码的长度。这有什么影响呢?我可以将值改为 1
.这样,密码的可能性就从一百万个减少到只有 10 个!
可以理解的是,当我告诉开发团队这个参数时,他们非常震惊,并立即进行了修复。不过,这也是影子 API 及其参数的一个完美例子。很有可能,这个参数最初是开发人员为了原型设计或测试的方便而使用的。当应用程序接口投入生产后,对该参数的支持从未取消,因此它就成了影子应用程序接口参数。
如果没有人探查这个特定的端点,了解可以使用未注明的参数做些什么,这个重大漏洞就不会被发现。更重要的是,开发团队在发现漏洞之前,不会刻意去寻找这个漏洞。
这个示例为制定有关影子 API 端点和参数的工作指南奠定了基础:任何不直接成为开发人员关注焦点的 API 端点或参数都存在于暗处,它们会带来风险,因为安全团队很可能也会忽略它们。
如何处理影子 API?
既然你已经知道什么是影子 API 端点和参数,那么后续问题就是你能做些什么。显然,你不能只是告诉你的安全团队要提高警惕,尤其是对于那些开发人员在工作中根本没有强调的东西。
您很可能需要一种工具或流程来帮助您评估 API 的安全性。您需要的工具类型取决于您的业务规模和部署的 API 数量。API 网关甚至API 安全工具都可以帮助你获得所需的安全程度,但它们可能超出你的需要。如果您只有几个端点可供 API 消费者使用,那么部署一套强大的工具来跟踪整个堆栈的流量并对可疑活动发出警报无疑是多此一举。
更简单的方法是确保您的应用程序接口有完善的文档。这也是一个很好的开始。首先,采用OpenAPI 标准来记录 API。记住,当你不注意端点和参数时,API 就会出现。OpenAPI 标准的全部意义就在于为您提供一个模型,让您指定并了解整个 API 中的每个端点和参数。
在此基础上,您还可以要求开发人员在部署时向安全团队提供这些 API 文档。然后,安全团队会根据文档测试 API,找出任何不准确或漏洞。这将防止出现任何盲点。
总结
如果你能照亮这些空间,事情就不会潜伏在阴影中。归根结底,如果您了解所部署 API 的详细信息,那么影子 API 就不可能存在。虽然这可能不是世界上最令人兴奋的任务,但记录 API 将有助于防止向恶意攻击者开放 API。
希望这篇文章能让您了解影子 API 的定义和危险。Go ,照亮 API 基础架构的阴暗角落,防止安全漏洞!
注释