Php 服务器和sslapi安全

Php 服务器和sslapi安全,php,security,api,rest,ssl,Php,Security,Api,Rest,Ssl,目前我正在开发一个RESTAPI 我的API访问权限仅在我的服务器和我的客户机服务器之间(B2B,企业对企业)。示例:myserverapi.com(我的RESTAPI服务器)和myclientserver.com(访问我的API的客户机服务器)*无第三个连接/应用程序 我们正在实现api_密钥(当然这是必须的)和域名(因此客户机特定于他将访问api的域名,因此我的服务器api将只接受来自该域名的信息) 对于myserverapi.com,如何仅从myclientserver.com接收连接?是

目前我正在开发一个RESTAPI

我的API访问权限仅在我的服务器和我的客户机服务器之间(B2B,企业对企业)。示例:myserverapi.com(我的RESTAPI服务器)和myclientserver.com(访问我的API的客户机服务器)*无第三个连接/应用程序

我们正在实现api_密钥(当然这是必须的)和域名(因此客户机特定于他将访问api的域名,因此我的服务器api将只接受来自该域名的信息)

对于myserverapi.com,如何仅从myclientserver.com接收连接?是否仅使用
$\u服务器['REMOTE\u ADDR']
?够了吗?但在读了一些地方的文章后,我发现我不能使用它,因为如果它在代理服务器或负载均衡器服务器场下,IP可能会出错。解决办法是什么

如果我安装了SSL证书怎么办?我必须更改代码吗?或者只是购买并安装在服务器端,我的api将自动安全

openssl验证功能是否只是真正了解访问是否来自特定服务器的安全方法?这是否意味着我必须更改我的代码以加密和解密此链接中的数据

所以基本上我只想确保myserverapi.com只从myclientserver.com获得访问权限。而myclientserver.com只接受来自myserverapi.com的数据。怎么做

我希望有人能给我一个很好的解释


感谢您提供SSL证书,您无需更改代码。但是,您可能希望检查服务器端口,如果不是SSL,则引发异常:

if ($_SERVER['SERVER_PORT'] != 443) {
    header('405 Method Not Allowed');
    exit();
}
当然,您可以使用Apache完成类似的限制,只需不在端口80上提供服务即可


对于IP限制,
$\u服务器['REMOTE\u ADDR']
应在大多数情况下工作。不幸的是,我认为没有办法绕过代理。但是,API密钥应足以满足大多数安全要求

你可以做一系列的事情。最不可知代码的是HTTPS客户端证书。如果您不关心用户到底是谁,只想确保这是一个允许的用户,那么让apache来处理这个问题。配置文件中只有几行代码,您不必触摸代码

第二个选项是ACL,您可以在Apache中再次处理ACL,即使是在路径级别。当然,在操作系统级别,您也可以将它们应用于IP和端口。这同样适用于服务器内或服务器前的防火墙


如果您不想管理证书或IP/端口防火墙和ACL,您可以实现两条腿的Oauth。客户机可以使用库,因为它们实际上已经以任何语言存在,服务器的代码也不太复杂。

回答有点晚,但是要检查远程地址是否有可能通过代理来的请求,您可以检查 设置了X-forwarded-for标头,如果存在,则使用该标头

“够了”是一个很难回答的问题;可能对一些人来说。在某些情况下,可能。传播政府机密,不。保护可能被传播的商业机密,不。有效地避开免费下载者,不。安全是要付出一定代价的,必须对运输、许可、访问等进行评估。因此,这取决于诚实地评估什么是关键,什么是需要或预期的,以及是否有足够的资金和时间来实现这一目标。相应地计划。