保护对 PHP API 的访问

问题描述 投票:0回答:3

我有一个 iPhone 应用程序正在服务器上使用我的 PHP API,但如果有人知道 URL,它当前已打开。我想确保没有人可以使用这个 API,直到我准备好将其设为公共 API(如果我这样做的话)。

我已阅读这篇文章,但我不确定他们说的是什么意思:

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

我不明白,如果我对计划使用 api 秘密发送的参数进行哈希处理,那么如果我发送未加密的参数/值,这会比仅对 API 秘密进行哈希处理更安全。

php ios rest hash
3个回答
5
投票

HTTPS API 并使用 API 密钥。然后您就会知道,只有拥有密钥的人(在本例中为您)才能访问该 API。

你说得对,它并没有更安全。这就是为什么我建议您使用 SSL 连接。除非您打算对来回传输的所有内容进行加密。

公钥/私钥场景也能很好地工作。 HTTPS 需要非常最少的努力


2
投票

数字签名提供了一种验证通过不安全连接发送的消息的方法。

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

客户端对请求进行签名:与其余请求数据一起,客户端将对合并后的请求数据进行哈希处理,并使用私钥对哈希值进行加密。服务器将以相同的方式生成哈希(将签名排除在哈希计算之外),然后使用公钥解密签名。如果哈希值匹配,则请求是真实的。

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

另请注意,任何保护 Web API 的方案只有在应用程序的副本掌握在受信任的人手中时才有效。如果任何不值得信任的人获得了它,他们就可以使用该应用程序或提取该应用程序使用的任何秘密数据并按照他们的意愿访问 API。


0
投票

出于开发目的,您可以仅使用 Web 服务器设置来仅允许来自您的 IP 的请求。

© www.soinside.com 2019 - 2024. All rights reserved.