保护Android应用程序网址免受无效请求的影响

时间:2016-09-30 11:49:25

标签: android security

我正试图找到方法来确保任何人从其他任何地方调用应用程序的URL,除了应用程序无效并且我使用的是okhttp3。在我的标头请求中,我有一个用户代理,其值是在需要时生成的app key-hash,并且从不使用

进行记录
try {
    PackageInfo info =     getPackageManager().getPackageInfo("MY PACKAGE NAME",     PackageManager.GET_SIGNATURES);
    for (android.content.pm.Signature signature : info.signatures) {
        MessageDigest md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
        Log.e("MY KEY HASH:", sign);
      //  Toast.makeText(getApplicationContext(),sign,     Toast.LENGTH_LONG).show();
    }
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}

这样,对于发送的每个请求,我都会检查用户代理的值是否与我的服务器上的值匹配(从keystore + signed apk生成),然后再执行其他操作。最重要的是,数据全部是POST,网址都是https。

我主要担心的是有人可以从apk获取提取应用程序密钥哈希吗?即使高级用户使用xposed,内存转储e.t.c

这足够安全吗?

1 个答案:

答案 0 :(得分:1)

您无法实现的任何操作都会阻止高级用户提取必要的值。这只是需要多长时间(分钟,小时或天)的问题。

提出的解决方案非常简单。我假设使用Xposed或Man-in-the-middle代理制动它只需几分钟。

如果你真的想要安全性,你必须使用SSL / TLS证书固定并使用一个好的Android硬化框架(通常是一个好的成本)。