我有一个用例,在我的 flutter 应用程序中对后端 API 进行 API 调用,后端 API 又调用第三方服务来验证两个图像是否相似。我担心的是,任何用户都可以使用 API 访问令牌直接使用欺骗数据调用后端 API,以获得经过验证的配置文件。如何确保图像数据来自手机摄像头本身?
我有一个用例,在我的 flutter 应用程序中对后端 API 进行 API 调用,后端 API 又调用第三方服务来验证两个图像是否相似。我担心的是,任何用户都可以使用 api 访问令牌直接使用欺骗数据调用后端 API,以获得经过验证的个人资料。
您需要为后端 API 提供一种机制,以区分请求中的“谁”与发出请求的“内容”。我写了一系列关于 API 和移动安全的文章,在文章为什么您的移动应用程序需要 Api 密钥?您可以阅读以下内容: what
是向 API 服务器发出请求的事物。它真的是您的移动应用程序的真实实例,还是机器人、自动化脚本或攻击者使用 Postman 等工具手动探查您的 API 服务器?“谁”是移动应用程序的用户,我们可以通过多种方式对其进行身份验证、授权和识别,例如使用 OpenID Connect 或 OAUTH2 流程。
因此,请将“谁”视为您的 API 服务器能够对数据进行身份验证和授权访问的用户,并将“什么”视为代表用户发出该请求的软件。当您理解了这个想法并且它在您的思维中根深蒂固后,您将以另一个视角来研究移动 API 安全性,并且您将能够看到您从未想过它们可能存在的攻击面。
可能的解决方案
如何确保图像数据来自手机摄像头本身? 我将在如何确保发送到后端的图像请求源自您真实且未经修改的移动应用程序,而不是来自被篡改的应用程序或来自机器人或手动请求的背景下更多地回答这个问题.
我建议您阅读
这个答案,特别是保护API服务器强化和屏蔽移动应用程序
、
和
可能的部分更好的解决方案了解解决问题所需的几种选择。 从答案中提供的几个解决方案中,最适合您问题的解决方案将是移动应用程序证明,这将使您的后端非常有信心,发出的请求确实是您真实且未经修改的移动设备应用程序,从而防止攻击者获得有效的配置文件,正如您主要关心的那样: 我担心的是,任何用户都可以使用 api 访问令牌直接使用欺骗数据调用后端 API,以获得经过验证的个人资料。 您想加倍努力吗?
在回答安全问题时,我总是喜欢参考 OWASP 基金会的出色工作。对于APIS
OWASP API 安全性前 10 名
对于移动应用程序
OWASP 移动安全项目是一个集中资源,旨在为开发人员和安全团队提供构建和维护安全移动应用程序所需的资源。通过该项目,我们的目标是对移动安全风险进行分类并提供开发控制以减少其影响或被利用的可能性。
移动安全测试指南(MSTG)是移动应用安全开发、测试和逆向工程的综合手册。