我如何才能让我的 API 只能通过我的应用程序访问(Javascript 和 PHP)?

How would I make it so my API is only accessible through my application (Javascript and PHP)?

我目前正在创建我的第一个 API。我知道如何设置所有端点并用它们做我想做的事。我遇到的问题是我不希望任何人都能够访问 site.com/api/example 并从中取回数据。 methods/concepts 可用以确保只有我的应用程序能够访问 API。我想要 POST 并使用 Javascript 和 PHP.

获取这些端点

如有任何帮助,我们将不胜感激,谢谢!

这里有两个选项:

  1. 不要让任何人知道您正在使用 API。只从服务器端调用 API,让 API 只监听来自你服务器 IP 的请求。直接 Javascript API 调用您的服务器,将它们转发到 API 并将(甚至可能过滤的)API 响应对象发送到客户端。

  2. API 身份验证结合 ACL(访问控制列表)。使用 oAuth 或 JWT 生成您随每个请求发送的访问令牌。通过 ACL,您可以根据执行请求的用户来改变输出。也许 Javascript 请求以有限的 public 数据响应,而对服务器端请求的响应可能包含您可能需要处理但不想共享的数据 public。

我个人使用两者的组合。 JWT 身份验证并且从不让 Javascript 直接发送请求,我总是在将它们转发到 API 之前验证这些服务器端(如果响应尚未缓存在服务器上)。

你基本上有两个解决方案:

  1. 应用程序身份验证:您的应用程序将负责处理您的用户身份验证,并向服务器提供身份验证成功的证据。实现将根据身份验证是直接在服务器上完成(通过提供凭据)还是间接完成(然后它会向服务器提供身份验证令牌)而有所不同。一些关键字:oAuth、JWT、LDAP

  2. Client-side TLS certificate:服务器会向您的应用请求出示 TLS 证书,以便建立 TLS 隧道。