我正在创建我的第一个API。我知道如何设置所有端点并使用它们做我想要的。我遇到的问题是我不希望任何人能够访问site.com/api/example
并从中获取数据。有哪些方法/概念可以确保只有我的应用程序能够访问API。我想要使用Javascript和PHP来POST和获取这些端点。
非常感谢任何对此的帮助,谢谢!
答案 0 :(得分:1)
你基本上有两个解决方案:
应用程序身份验证:您的应用程序将负责处理您的用户身份验证,并向服务器提供成功身份验证的证据。实现将根据身份验证是直接在服务器上完成(通过提供凭据)还是间接执行(然后它将向服务器提供身份验证令牌)而有所不同。一些关键字:oAuth,JWT,LDAP
Client-side TLS certificate:服务器将从您的应用中请求提供TLS证书,以便设置TLS隧道。
答案 1 :(得分:-1)
以下是两个选项:
不要让任何人知道您正在使用API。只从服务器端调用API,让API只监听来自服务器IP的请求。对您的服务器进行直接Javascript API调用,将其转发到API并将(甚至可能已过滤的)API响应对象发送到客户端。
API身份验证与ACL(访问控制列表)结合使用。使用oAuth或JWT生成随每个请求一起发送的访问令牌。通过ACL,您可以根据执行请求的用户来改变输出。也许Javascript请求会被有限的公共数据响应,而对服务器端请求的响应可能包含您可能需要处理的数据,但不想公开共享。
我个人使用两者的组合。 JWT身份验证并且永远不会让Javascript直接发送请求,我总是在将它们转发到API之前验证这些服务器端(如果响应未在服务器上缓存)。