验证应用程序是否是我的服务器端

时间:2013-06-17 22:37:29

标签: android

我正在写一个铃声库应用程序,铃声驻留在服务器上,用户可以下载它们。

我想要的是检查并验证连接是否真的来自我的应用程序,而不是其他应用程序或HTTP请求生成器。例如,我不喜欢有人写一个使用我的后端的应用程序,并在应用程序中显示他的广告。这就像通过检查引荐来阻止网站中的图像浸出一样。

无法在应用程序中插入密钥,因为Android应用程序可以轻松反编译。我想获得应用程序签名并将其作为密钥发送,但它就像任何应用程序都可以访问其他应用程序签名哈希。

如何编写使用本机代码进行通信的应用程序的一部分?它可以像java代码一样简单地解压缩吗?

我真的想不出任何其他方式,我不喜欢别人利用我的资源为他们带来好处。

1 个答案:

答案 0 :(得分:3)

你可以做几件事。

  1. 创建您自己的证书颁发机构,使用您的应用程序发送证书并使用双向TLS身份验证。这不能防止反编译和逆向工程,但可以保护途中的流量。
  2. 使用this幻灯片中的建议来检测修改和调试程序。
  3. 使用Jelly Bean的硬件支持secure storage
  4. 但是,在一天结束时,DRM是一场失败的战斗。如果用户具有root访问权限,则所有投注都会关闭,无论是否有模糊处理(本机库都是)。唯一的问题是您的数据有多重要。对于90%的应用程序,通过ProGuard运行它几乎不可能解开(特别是如果您使用数据流混淆)。除了证书方法,这应该足以满足大多数事情。

    或者,尝试更改您的模型,以便您对用户进行身份验证,而不是应用程序 - 这更简单!