私有REST API

Dev*_*555 3 php api rest

我们有REST API,我们只希望我们的域可以访问,并且不会发送欺骗请求.要做到这一点,我脑海中唯一想到的就是检查引用者$_SERVER['HTTP_REFERER'].然而,文档说:

将用户代理引用到当前页面的页面地址(如果有).这是由用户代理设置的.并非所有用户代理都会设置此功能,有些用户可以将HTTP_REFERER修改为功能.简而言之,它无法真正被信任.

所以我们说主要的API请求/门文件是:

www.example.com/api/gate.php
Run Code Online (Sandbox Code Playgroud)

如何使其安全,以便只提供来自自己域的请求而忽略所有其他请求.我已经阅读了一些关于http身份验证和设置私钥或秘密的内容,但我正在寻找一种简单的方法,因此只有我们自己的域可以向该文件发送请求.谢谢

Tel*_*ues 5

如已经陈述的那样,HTTP_REFERRER并且REMOTE_ADDR可能是潜在的欺骗,因此不可信任地实现所述功能.另请注意,在共享主机环境中,同一服务器中的其他帐户也具有相同的IP.

快速解决方案可以是使用基本身份验证来验证对API的请求.这不会按IP或引用URL/IP进行过滤,但会确保请求来自可信来源.

在Apache环境中,设置基本身份验证就像创建.htaccess.htpasswd文件一样简单,并将它们放在API的根目录中.

您可以使用以下生成器创建这两个文件:
.htaccess generator
.htpasswd generator

设置基本身份验证后,在PHP中验证请求就像以下方式访问API一样简单:

username:password@example.com

因此,不需要开发额外的代码来设置任何标头来验证您的请求.访问该URL的任何人都将被提示输入凭据,如果身份验证失败则拒绝访问.

在此输入图像描述