在服务器上隐藏 API 密钥
但是,将这些放在服务器上也无济于事,有人
可以对我用来发送的服务器端点进行反向工程
短信并改用它。
是的,它确实有很大帮助。
如果有人可以访问您的网络服务的密钥,他们只能做您的服务允许他们做的事情。拥有一个封装所有 3d 方密钥和 API 的 Web 服务是一个非常好的主意 - 这样更安全。
没有人可以访问您的敏感密钥,这将允许他们执行一切。
例如,第 3 方 API 允许删除 - 您的服务器包装 API 不允许删除。
此外,您可以为可疑行为添加任何额外的逻辑或警报。
在应用中隐藏 API 密钥
如果有人下定决心,您将无法阻止从您的应用中对密钥进行逆向工程。你只能让这更难。 计算机安全永远不应该是“做起来有多难/多复杂”,但在这种情况下,我们别无选择。
好的,因此您必须将 API 密钥硬编码到源文件中。它可以很容易地进行逆向工程。
您可以对您的密钥进行混淆处理,这样就无法直接读取它们。结果将是它们分散在一个编译文件中,而不是舒适地放在一个地方。
在 iOS 上你可以使用 like this.
在 Android 上,您可以使用 DexGuard 或任何其他方式来混淆字符串。
加密密钥
另一个让黑客难以攻击的方法是加密密钥。
Here's an example for iOS.
你可以对 Android 做同样的事情。
完美场景
好的,假设您有一个用于视频管理的第三方 API。
黑客想要删除服务器上的所有视频,因为第三个 API 允许这样做。
首先,他必须将文件中所有分散的字符串粘起来。如果他设法做到这一点,他必须找到一种方法来解密它。
即使他设法解密,这也会给他你的服务器和你的服务器的 API 密钥,而你的服务器只允许上传视频,而不是删除它们。