首页 > 解决方案 > 无需用户注册的安全 API - php/Laravel

问题描述

我在 Laravel 中有一个 API,主要是 GET 端点和一个 android 应用程序。

该应用程序旨在无需身份验证即可打开,例如booking.com,您无需登录或注册即可浏览酒店。

任何人都可以访问我的端点并获取原始 JSON 数据,甚至可以在他们自己的应用程序中创建一个使用我的端点的应用程序。

如何保护我的端点?例如,使用基于令牌或任何其他签名仅信任我的客户端应用程序。

实际上我从堆栈交换中复制粘贴了这个问题,但这正是我的问题

标签: phplaravelapirestapi-security

解决方案


访问 API 服务器的 WHO 和 WHAT 之间的区别

该应用程序旨在无需身份验证即可打开,例如booking.com,您无需登录或注册即可浏览酒店。

请记住,即使使用了用户身份验证,API 仍然容易被其他脚本、应用程序、僵尸网络等使用,前提是它们具有用户身份验证令牌,并且如何做到这一点超出了我们的范围这个答案。用户身份验证仅用于识别请求中的,而不是发出请求的内容,因此,即使您的移动应用程序具有用户身份验证,API 后端也不会被锁定到您的移动应用程序的真实和未篡改版本。

访问 API 后端的人和对象之间的区别任何资历的开发人员通常的误解,因此,如果您还没有得到它,请不要感到“内疚”;)

我写了一系列关于 API 和移动安全的文章,在文章为什么你的移动应用需要 Api Key?您可以详细阅读访问 API 服务器的人员访问者之间的区别,但我将在此处提取其中的主要内容:

向 API 服务器发出请求的内容是什么。它真的是您的移动应用程序的真实实例,还是机器人、自动脚本或攻击者使用 Postman 之类的工具手动绕过您的 API 服务器?

是移动应用程序的用户,我们可以通过多种方式进行身份验证、授权和识别,例如使用 OpenID Connect 或 OAUTH2 流。

想想是您的 API 服务器将能够验证和授权对数据的访问的用户,并想想代表用户发出请求的软件是什么。

因此,一旦您的移动应用程序中没有用户身份验证,您就无法对请求中的进行身份验证和授权,因此您只能授权API 后端执行请求的内容。

将 API 锁定到 Android 应用程序

如何保护我的端点?例如,使用基于令牌或任何其他签名仅信任我的客户端应用程序。

这是一项非常艰巨的任务,但并非不可能完成的任务,我建议您阅读我对如何保护移动应用程序的 API REST问题的回答?,尤其是保护 API 服务器可能的更好解决方案的部分,它将让您了解一些基本和高级技术或链接到资源以了解它们,例如:

  • 证书固定
  • HMAC
  • 验证码 V3
  • WAF 的
  • UBA
  • 移动应用加固和屏蔽
  • 移动应用证明

你想加倍努力吗?

在回答安全问题时,我总是喜欢参考 OWASP 基金会的出色工作。

对于 APIS

OWASP API 安全前 10 名

OWASP API 安全项目旨在通过强调不安全 API 中的潜在风险并说明如何减轻这些风险,为软件开发人员和安全评估人员提供价值。为了促进实现这一目标,OWASP API 安全项目将创建和维护一个 Top 10 API 安全风险文档,以及一个文档门户,用于创建或评估 API 时的最佳实践。

对于移动应用

OWASP 移动安全项目 - 十大风险

OWASP 移动安全项目是一个集中资源,旨在为开发人员和安全团队提供构建和维护安全移动应用程序所需的资源。通过该项目,我们的目标是对移动安全风险进行分类并提供开发控制以减少其影响或被利用的可能性。

OWASP - 移动安全测试指南

移动安全测试指南 (MSTG) 是移动应用安全开发、测试和逆向工程的综合手册。


推荐阅读