看完之后,似乎试图保护可公开访问的API(不需要用户登录的应用程序/站点使用的API)似乎无济于事,例如,将密钥存储在应用中,用户可以对应用进行反向工程。
我的问题与人们如何尽可能地保护和减缓对公共可访问API的滥用...
限速?检查请求的来源(尽管可以被欺骗)...。还有其他吗?
如果该站点是SSR,那么它是否仅受服务器IP保护?
答案 0 :(得分:0)
看完之后,似乎试图保护可公开访问的API(不需要用户登录的应用程序/站点使用的API)似乎无济于事,例如,将密钥存储在应用中,用户可以对应用进行反向工程。
安全是指深入防御,因此也就是要增加法律可以承担和承担的尽可能多的层,以减轻风险,因此,您添加的任何防御都是一层,可以防止这种简单/愚蠢的行为自动化脚本来访问它,同时又可以提高黑客四处寻找克服所有防御措施所需的技能和精力。
限速?
这是任何API都必须使用的,否则自动化脚本可以轻松地在几秒钟内提取大量数据。应用此速率限制越严格,其他防御层检测到可能正在发生对API的未授权访问并尝试缓解/阻止它的机会就越大。要记住,可以通过调整攻击以使请求不触发它来绕过速率限制,并且在某些情况下,该软件可以很容易地自动将响应头中的节流值返回给该软件。
检查请求的来源(尽管可以被欺骗)....
虽然它很容易被绕开,但是为什么不呢?它将过滤掉一些笨拙的自动化脚本/机器人,这将是另外一层防御。
如果该站点是SSR,那么它是否仅受服务器IP保护?
无论是SSR站点还是任何其他类型的应用程序,在通过手机使用时,在加载页面或移动应用程序屏幕时,IP地址都可以更改,因为当电话在主机之间切换时,IP将会更改。另外请记住,在办公室或公共wifi中,所有使用该IP的用户都将具有相同的IP。
需要仔细评估将其用作阻止措施的情况,通常需要对请求进行指纹识别,以减少阻止共享同一网络的其他有效用户的风险。
只有当我可以确定嘿是已知的错误IP时,我才会非常谨慎地使用它来避免/阻止/限制请求,您可以从自己的请求历史记录和/或公共数据集中收集这些IP。
围绕任何资历的开发人员的常见误解是不知道请求中的谁与发出请求的什么不同,因此我们首先将其清除...
当您的API未使用用户身份验证时,重要的是要意识到这种区别,以便更好地围绕API服务器中要采用的安全措施执行明智的决定。
我写了一系列有关API和移动安全的文章,在文章Why Does Your Mobile App Need An Api Key?中,您可以详细了解谁和什么之间的区别正在访问您的API服务器,但在此我引用其中的主要内容:
什么是向API服务器发出请求的东西。它确实是您的移动应用程序的真实实例,还是机器人,自动脚本还是攻击者使用诸如Postman之类的工具手动在您的API服务器上闲逛?
谁是移动应用程序的用户,我们可以通过多种方式进行身份验证,授权和标识,例如使用OpenID Connect或OAUTH2流。
记住差异的最好方法是考虑谁,因为您的API服务器将能够对用户进行身份验证和授权访问数据,并考虑什么< / strong>作为代表用户发出请求的软件。
我的问题与人们如何尽可能地保护和减缓对公共可访问API的滥用...
对于仅服务于移动应用程序的API,您可以使用我在my answer中针对问题如何保护移动应用程序的API REST?的移动应用程序证明概念。。 >
对于仅服务于Web应用程序的API,我建议您阅读my answer,以解决问题来自应用程序调用的安全api数据?。
还有什么?
似乎您已经进行了一些研究,但您可能还不知道OWASP指南和主要风险。
The Web Security Testing Guide:
OWASP Web安全测试指南包括用户可以在自己的组织中实施的“最佳实践”渗透测试框架,以及描述了测试最常见Web应用程序和Web服务安全性问题的技术的“低级”渗透测试指南。
OWASP Mobile Security Project - Top 10 risks
OWASP移动安全项目是一个集中式资源,旨在为开发人员和安全团队提供构建和维护安全移动应用程序所需的资源。通过该项目,我们的目标是对移动安全风险进行分类并提供开发控制措施,以减少其影响或被利用的可能性。
OWASP - Mobile Security Testing Guide:
移动安全测试指南(MSTG)是用于移动应用安全开发,测试和逆向工程的综合手册。
OWASP API安全项目旨在通过强调不安全API中的潜在风险并说明如何减轻这些风险来为软件开发人员和安全评估人员提供价值。为了实现此目标,OWASP API安全项目将创建和维护“十大API安全风险”文档,以及用于创建或评估API的最佳实践的文档门户。