Php 通过API安全地向应用程序和驻留站点提供数据

Php 通过API安全地向应用程序和驻留站点提供数据,php,api,Php,Api,我不太确定API是否是实现这一点的方法,所以需要一点背景知识 我一直在建立一个后端,它有一组非常有用的数据和工具,供运行站点的人使用。正如人们所期望的那样,前端还使用相同的数据向客户显示。在不久的将来,可能会添加一个移动应用程序,以便通过该应用程序对网站进行更改。但是后端可以像标准脚本一样进入任何网站(即,它不是集中存储的,也没有任何数据在客户和我们之间来回) 所以我认为最好的解决方法是为站点制作一个API。当然,对于要访问API的应用程序,它需要一个密钥来通过API进行身份验证(最终用户可以通

我不太确定API是否是实现这一点的方法,所以需要一点背景知识

我一直在建立一个后端,它有一组非常有用的数据和工具,供运行站点的人使用。正如人们所期望的那样,前端还使用相同的数据向客户显示。在不久的将来,可能会添加一个移动应用程序,以便通过该应用程序对网站进行更改。但是后端可以像标准脚本一样进入任何网站(即,它不是集中存储的,也没有任何数据在客户和我们之间来回)

所以我认为最好的解决方法是为站点制作一个API。当然,对于要访问API的应用程序,它需要一个密钥来通过API进行身份验证(最终用户可以通过其后端进行设置)。但是,我希望后端和前端使用API访问相同的数据,因此无需编写两次

我确信很明显,API对我来说是一个新事物,它们确实是。但是,我正在努力改进和调整我的编码以提高效率

我认为API也许可以从查询的位置进行一些检查,看看它是本地请求(后端/前端)还是通过应用程序(使用密钥+用户身份验证)。那么,如何确保后端和前端可以安全地访问API,而没有人可以通过欺骗来访问它呢。我想检查可能在请求URL的行上,但我担心这可能是伪造的,或者其他东西(可以检查)可能是伪造的。允许本地访问的最佳方式是什么?有什么东西是不能欺骗的吗


我知道我可以在代码中写入密钥,但由于代码是分布式的,我不希望此访问密钥是公共的,也不希望手动更改每个站点的密钥,也不希望最终用户在安装过程中输入一些随机字母和数字。

您应该使用公钥/私钥。您的前端/后端、移动版本甚至第三方开发人员将使用他们的密钥相互验证。

听起来像是要将前端/后端的密钥硬编码到PHP代码中?当然,这意味着一个人在代码中找到了密钥,那么他们就可以从每次安装中访问每个API了?如何确保该请求仅来自该请求应该来自的站点?我建议您阅读这篇维基百科文章: