我有一个Android应用程序。应用程序从我的服务器读取数据并将其显示给用户。
现在,问题是:如何阻止某人制作虚假应用并要求我的服务器向此应用发送数据?
这会浪费我的带宽并利用我的内容,同时允许人们使用我的数据创建有竞争力的应用。
如您所知,试图阻止逆向工程就像试图阻止盗版:不可能。 Android逆向工程尤其就像从婴儿那里偷糖果一样。
答案 0 :(得分:5)
使用API令牌。可能的解决方案:
但请注意,无论哪种方式,您都需要以某种方式对应用中的密钥/ salt / hash /密码进行硬编码,这可以通过某种方式进行逆向设计。 Android中没有真正(实际)的可能性来避免恶意客户端访问您的后端(特别是在root设备中)。
我建议使用HTTP Basic Auth,因为它是努力,可用性和安全性的最佳权衡(它也被大多数公共api使用)它很容易实现,因为你只需要发送一个硬编码的http头,它是由几乎每个http服务器都没有改变你的API并用查询参数污染它,如果在https上使用它也相当安全。
答案 1 :(得分:2)
使服务器需要API密钥并对代码中的密钥进行模糊处理,请参阅以下答案:Best Practice for storing private API keys in Android
答案 2 :(得分:2)
如果您使用http服务器,则可以使用http auth basic
答案 3 :(得分:1)
您可以使用类似reCAPTCHA的内容来验证客户端不是机器人。