2013-03-14 47 views
1

我期待构建一个API,我可以在我的服务器上部署以监视系统负载。
它将向运行客户端以显示信息的中央管理器服务器报告。创建安全的API通信

我正在努力的问题是最好的保护API。
我想要的是客户端是唯一可以访问服务器并检索这些信息的软件,但我不确定如何使用PHP来实现此目的。
我也希望分发API和客户端供其他人在他们的服务器上使用的可能性,所以我不希望人们能够访问其他人的数据,如果他们也使用API​​。

客户端也使用MySql以PHP编写,并具有安全登录。

+0

考虑使用SSL/TLS。 – Lekensteyn 2013-03-14 09:51:20

+0

是的,我想到了,但人们仍然可以访问网址并获取数据,我想我可以限制访问并需要一个特定的IP地址,但这不是很灵活。 – bobthemac 2013-03-14 09:53:49

+0

你有没有考虑过使用API​​密钥? – Raad 2013-03-14 09:56:01

回答

1

这听起来像你试图解决错误的问题。

我也希望可以分发API和客户端供他人在他们的服务器上使用,所以我不希望人们能够访问其他人的数据,如果他们也使用API​​。

唯一正确的答案是认证。您需要通过为每个用户提供只有他们知道的访问凭据来保护您的API。

您的API必须从不显示客户端不允许看到他们的身份验证凭据的任何数据。试图通过试图以某种方式保护客户端免于窥探来解决此危险不安全 - 有人访问客户端并且可以观察到它的运行情况,只要付出足够的努力就能够对它与服务器之间的任何流量进行逆向工程。

如果API已妥善保护,那么使用哪个客户端工具访问它并不重要。限制API访问某个程序的要求将消失。

+0

我已经在客户端拥有访问凭据,但API将在完全不同的服务器上运行,我们是在讨论分配给用户的公钥和私钥。 – bobthemac 2013-03-14 10:18:59

+0

@bob如果您已经拥有身份验证,那么为什么有人使用不同于* your *特定客户端的API来访问API,那么这样的问题呢?如果他们使用自己的工具访问您的API,会发生什么?毕竟,访问凭证已经可以防止滥用。他们不是吗? – 2013-03-14 10:21:54

+0

api完全独立,它作为不同服务器上的单独服务运行。客户端是用来访问API的,这就是认证。 – bobthemac 2013-03-14 10:38:12

0

如果您使用SSL以及身份验证(我使用第三方认证谷歌,fb等),即时创建数据/报告并将数据保存在您的web文件夹外的子目录中(而不是/ var/www,/ var/myStorage/currentSessionId /),那么你基本上可以保证你想要的安全性。

您的php只会访问为其运行的会话命名的子目录。