我有一个Android应用程序,它发送有关服务器购买的更新。我现在做的是,我使用服务器端和Android客户端的相同密钥生成器将购买和其他一些共享细节加密到MD5中。但是,如果有人解码APK文件,该人可以通过生成密钥轻松地进行调用。防止这类攻击的最佳方法是什么?
答案 0 :(得分:0)
最佳解决方案是您实施一些Web服务,该服务将返回一个访问密钥(每次您想要获取访问密钥时都会更改),每次使用POST方法与服务器通信时都会使用该访问密钥。这是最安全的方法,被Facebook,Twitter等所有好网站使用。
答案 1 :(得分:0)
使用HTTPS与您的服务器通信,以保护传输中的数据。不要试图发明一个安全的协议。如果要限制对服务器API的访问,请使用某种形式的身份验证:用户名和密码(通过HTTPS)或更好的某种身份验证令牌(OAuth等)。如果您在APK中存储密钥和/或密码,任何人都可以通过反编译APK来提取它们。如果您想要防止这种情况发生,您需要在令牌过期时使用令牌身份验证,如果受到威胁则可能无效。
答案 2 :(得分:0)
我的问题基本上是关于使用应用内购买更新服务器,我最终在服务器端进行公钥/私钥验证。 Android建议在客户端验证收据,但我们只是将收据转发到服务器并使用公钥进行验证。