通过 API 保护来自 Android App 的 GET 请求


Protect GET Request from Android App over API

我想通过API获取JSON Array。我们创建的 API 运行良好,但我们担心,因为我们在 Android 应用程序上使用 API,并且反编译 APK 并访问我们的 API 可能更容易。由于它是一个安卓应用程序,我们无法通过IP限制访问。

但是,我们希望保护对该 API PHP 文件的访问,通过应用程序接受该文件。有没有办法验证应用程序在服务器端发出的拉取请求。

注意:我们使用的是 Amazon EC2 实例。我不会在这里发布对文件或我们服务器的直接访问。

您可以使用

PackageManager 类访问 APK 的签名签名 http://developer.android.com/reference/android/content/pm/PackageManager.html

Signature[] sigs = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES).signatures;
for (Signature sig : sigs) {
    Log.i("MyApp", "Signature hashcode : " + sig.hashCode());
}

我们可以使用它来与调试密钥或发布密钥的哈希代码进行比较,以确定 APK 是调试 APK 还是发布 APK,或者使用任何其他签名签名。

因此,如果有人试图混淆您的apk,应用程序的签名将更改。

您必须对 API 进行更改,并且需要发送签名 的应用程序,以便服务器可以确保 API 调用 是真实的。

此外,您需要在构建应用程序时在应用程序中启用 proguard,以便使混淆变得困难。

希望有帮助。干杯!!