如何保护您的 API 免受了解您 API 的开发人员的攻击? [关闭]

Posted

技术标签:

【中文标题】如何保护您的 API 免受了解您 API 的开发人员的攻击? [关闭]【英文标题】:How to protect your API from developers who knows your API? [closed] 【发布时间】:2021-03-03 03:08:06 【问题描述】:

我是一家公司的全栈开发实习生。我正在从事在线书店项目。我的经理问了一个问题。

他问“如果有人(即其他开发人员)知道您的代码或 API,他们可以更改您项目中的代码或 API,并将自己添加为管理员,或者可以从数据库中删除某些用户,并通过更改执行 CRUD 操作你的 API。那么你怎么能解决这个问题呢?”。

我的建议:我们可以将代码放在某个服务器中,而不是将代码放在本地机器中。

请提出您的意见和正确答案。

【问题讨论】:

我认为this 文章是一种很好的方式,可以让人们简要了解源代码安全性。 我们可以在获取响应时使用 API 中的标头。在 Header 中,我们使用一个键,然后条件是 php 代码,其中键是您无法获得响应的更改。如果有人知道您的键然后得到响应。这个技巧是为了保护您的响应数据。 API 网关呢?? 所以任何人都可以无条件访问版本控制系统并且可以进行更改?如果您无法控制谁可以更改代码,那么开发保护是没有意义的。 【参考方案1】:

我建议您使用像 githubgitlab 这样的代码库。将您的项目上传为存储库后,更改存储库的设置,以便不允许其他人更新代码(没有其他贡献者)。您在生产中的项目代码应基于此存储库进行部署。 不只是更新,您还可以将您的存储库设为私有,这样任何人都无法看到您的代码。

【讨论】:

如何更改存储库的设置以使其他人无法更新代码?.....您的意思是拥有私有存储库?? @Arivazhagan 不,它可能是公开的。但是您可以定义谁为项目做出贡献。如果您不允许任何其他人作为项目的贡献者,那么没有人将能够在主存储库中提交任何更改。他们仍然可以分叉一个公共存储库并在他们的本地机器上进行更改。但是由于不允许将他们的更改合并到主存储库,因此它不会投入生产。如果您不希望任何人看到您的代码,那么您需要将其设为私有。 通常在组织中,只有高级人员才有权更新代码。所以初级人员会从他们的本地机器上更新代码并输入merge request(gitlab 术语)。此合并请求需要由有权进行更新的人批准。只有获得批准,代码才会到达主存储库。【参考方案2】:

我相信您的问题主要与运行时行为或对休息服务的控制有关。这就是安全发挥作用的地方。网关通过过滤资源路径来发挥作用。他知道的 API 端点可以在 Gateway 处过滤或重新映射。通过身份验证和授权保护应用程序增加了另一层保护。例如。只有通过身份验证的人 A 才能访问该应用程序。一旦通过身份验证,只有当此人属于 SystemAdmin 等类别时,A 才能添加他/她自己。

如果它与代码管理有关,那么存储库管理就会发挥作用。为少数人设置将更改推送到 Master 分支的权限。从逻辑上讲,所有开发人员都应该在 Forked 分支上工作,并将创建一个 Pull Request 以将更改推送到 Master 分支。这将使 Master 分支的版主有机会审查代码并将其过滤掉。

【讨论】:

以上是关于如何保护您的 API 免受了解您 API 的开发人员的攻击? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Kong入门指南 - 保护您的服务

Kong入门指南 - 保护您的服务

如何使用公钥保护 Web API 免受未经授权的访问?

如何发布访问 REST api 的 jQuery 代码,但保护它免受未经授权的使用

如何使用 IdentityServer4 保护 API(免受意外调用)?

如何防止对 API Key 和 API Secret 的 MITM 攻击?