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

时间:2017-02-18 14:14:33

标签: javascript php api security endpoint

我正在创建我的第一个API。我知道如何设置所有端点并使用它们做我想要的。我遇到的问题是我不希望任何人能够访问site.com/api/example并从中获取数据。有哪些方法/概念可以确保只有我的应用程序能够访问API。我想要使​​用Javascript和PHP来POST和获取这些端点。

非常感谢任何对此的帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

  2. Client-side TLS certificate:服务器将从您的应用中请求提供TLS证书,以便设置TLS隧道。

答案 1 :(得分:-1)

以下是两个选项:

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

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

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