是否有任何方法可以将对我的 REST API 的发布请求限制为来 self 自己的移动应用二进制文件的请求?此应用将在 Google Play 和 Apple App Store 上发布,因此应该暗示有人可以访问其二进制文件并尝试对其进行逆向工程。
我正在考虑一些涉及应用签名的事情,因为每个已发布的应用都必须以某种方式进行签名,但我不知道如何以安全的方式进行签名。可能是获取应用签名、基于时间的哈希、应用生成的 key 对以及良好的旧安全性(尽管晦涩难懂)的组合?
我正在寻找尽可能多的故障证明。原因是因为我需要根据手机传感器收集的数据向应用程序传递数据,如果人们可以冒充我自己的应用程序并将未经我自己算法处理的数据发送到我的api,它就会失败目的。
无论多么复杂,我都愿意接受任何有效的解决方案。非常感谢锡箔帽解决方案。
最佳答案
用户可以公开存储在应用程序中的任何凭据。对于 Android,他们可以完全反编译您的应用并轻松检索它们。
如果与服务器的连接不使用 SSL,则很容易从网络中嗅出它们。
说真的,任何想要凭据的人都会得到它们,所以不要担心隐藏它们。本质上,您有一个公共(public) API。
存在一些缺陷,并且需要额外的时间来管理公共(public) API。
许多公共(public) API 仍按 IP 地址进行跟踪并实现 tarpit,以简单地减慢来自任何似乎滥用系统的 IP 地址的请求。这样,来自同一 IP 地址的合法用户仍然可以继续操作,尽管速度较慢。
您必须愿意关闭某个 IP 地址或 IP 地址范围,尽管您可能会在阻止滥用者的同时阻止无辜和正直的用户。如果您的应用程序是免费的,它可能会给您更多的自由,因为没有预期的服务水平和契约(Contract),但您可能希望通过法律协议(protocol)保护自己。
一般来说,如果您的服务足够受欢迎以至于有人想要攻击它,这通常是一个好兆头,所以不要过早地担心它,但要保持领先。您不希望应用失败的原因是用户厌倦了在缓慢的服务器上等待。
您的另一个选择是让用户注册,这样当您发现滥用行为时,您可以通过凭据而不是 IP 地址来阻止。
关于android - 将 API 请求限制为仅我自己的移动应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21465559/