保护对PHP API的访问

时间:2012-07-05 19:12:47

标签: php iphone api rest hash

我有一个iPhone应用程序在服务器上使用我的php api,但如果有人知道该网址,它当前是打开的。我想确保没有人可以使用这个API,直到我准备好使它成为公共API(如果我做的话)

我已阅读this article但我不确定他们说:

时的意思
  

[客户端]在进行REST API调用之前,将一堆唯一数据组合在一起(这通常是您要发送的所有参数和值,它是AWS网站上代码段中的“数据”参数)< / p>

我不明白如果我用我的api秘密散列我计划发送的参数,如果我发送未加密的参数/值,这比仅仅散列api秘密更安全。

3 个答案:

答案 0 :(得分:5)

HTTPS API并使用API​​密钥。然后你会知道只有拥有密钥的人(在这种情况下你)可以访问API。

你说得对,它不是更安全。这就是为什么我建议你SSL连接。除非您计划加密来回传输的所有内容。

公钥/私钥方案也会运作良好。 HTTPS需要非常最小的努力

答案 1 :(得分:2)

Digital signatures提供了一种验证通过不安全连接发送的消息的方法。

设置:每个客户端都有自己的私钥公钥(只需要将私钥存储在客户端上)。服务器将存储每个客户端的公钥。公钥可以对所有人可见,并且可以由服务器用于标识客户端。私钥只有客户知道,它永远不会向任何人显示。

客户端签署请求:客户端将与其余的请求数据一起散列组合的请求数据,并使用私钥加密哈希。服务器将以相同的方式生成散列(将签名保留在散列计算之外),然后使用公钥解密签名。如果哈希值匹配,则请求是可信的。

请注意,HTTPS允许客户端证书,因此您可以利用现有工具完成上述所有工作,而无需编写单行服务器端代码(您只需配置Web服务器;唯一的技巧是确保服务器只接受它已有的证书)。此外,客户端代码的数量应该是最小的:除了设置连接以使用客户端证书之外,您不应该做更多的事情。由于您正在控制客户端,因此可以使用自签名证书并将服务器添加为证书颁发机构。有关使用client certificates in iPhone apps的问题有很多问题;你可以从阅读它们开始。

另请注意,只要应用程序的副本位于受信任的手中,任何保护Web API的方案都有效。如果有人不值得信任,他们可以使用应用程序或提取应用程序使用的任何秘密数据,并按原样访问API。

答案 2 :(得分:-1)

出于开发目的,您只需使用您的Web服务器设置来允许来自您的ip的请求。