首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >服务器和SSL API安全性

服务器和SSL API安全性
EN

Stack Overflow用户
提问于 2012-12-09 11:59:07
回答 3查看 489关注 0票数 3

目前,我正在开发一个REST API

我的应用程序接口访问只在我的服务器和我的客户端服务器之间(B2B,企业对企业)。示例:myserverapi.com(我的REST API服务器)和myclientserver.com(访问我的API的客户端服务器)*没有第三个连接/应用程序

我们实现了api_key(当然这是必须的)和域名(所以客户端指定了他将访问的域名,所以我的服务器api只接受域名)

对于myserverapi.com,如何只接收来自myclientserver.com的连接?是否只使用$_SERVER['REMOTE_ADDR']?这就足够了吗?但在从一些地方读取后,我不能使用它,因为IP可能是错误的,如果它在代理或负载均衡器群下。解决方案是什么?

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

openssl-verify函数仅仅是确定访问是否来自特定服务器的安全方法吗?http://php.net/manual/en/function.openssl-verify.php意味着我必须更改代码来加密和解密数据,就像下面的链接http://3stepsbeyond.co.uk/2010/12/openssl-and-php-tutorial-part-two/一样

所以基本上我只想确保myserverapi.com只从myclientserver.com获得访问权限。并且myclientserver.com只接受来自myserverapi.com的数据。如何做到这一点?

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

谢谢

EN

回答 3

Stack Overflow用户

发布于 2012-12-10 03:00:42

你可以做一系列的事情。代码最不可知的是HTTPS客户端证书。如果您不关心用户的确切身份,但只想确保这是一个允许的用户,那么就让apache来处理。这只是配置文件中的几行代码,而且您不需要修改代码。

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

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

票数 1
EN

Stack Overflow用户

发布于 2012-12-09 12:22:42

对于SSL证书,您不必更改代码。但是,您可能希望检查服务器端口,如果不是SSL,则抛出异常:

代码语言:javascript
复制
if ($_SERVER['SERVER_PORT'] != 443) {
    header('405 Method Not Allowed');
    exit();
}

当然,您可以使用Apache实现类似的限制,只需不在端口80上提供服务即可。

对于IP限制,$_SERVER['REMOTE_ADDR']应该在大多数情况下都能工作。不幸的是,我不认为有办法绕过代理。但是,API密钥应该足以满足大多数安全需求。

票数 0
EN

Stack Overflow用户

发布于 2013-08-03 10:46:00

回答有点晚了,但是为了检查remote_addr中可能通过代理发送的请求,您可以检查是否设置了X-forwarded-for标头,如果存在,则使用它。

http://en.wikipedia.org/wiki/X-Forwarded-For

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13784499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档