【问题标题】:Protect GET Request from Android App over API通过 API 保护来自 Android 应用程序的 GET 请求
【发布时间】:2016-11-13 09:07:38
【问题描述】:

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

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

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

【问题讨论】:

  • 您能否提供一些代码,以便我们为您提供帮助?
  • 没有办法保护rest api。使用 proguard 或一些商业解决方案来保护 dex 免受反编译。
  • 如果有人可以完美地对您的 APK 进行逆向工程,那么在该 APK 中实施的任何类型的安全措施都不是真正安全的。

标签: php android api


【解决方案1】:

您可以像这样使用 PackageManager 类 http://developer.android.com/reference/android/content/pm/PackageManager.html 访问 APK 的签名签名

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 进行更改并且需要发送签名 Restful API 中的应用程序,以便服务器可以确保 API 调用 是真的。

此外,您还需要在构建应用时在应用中启用 proguard,以使其难以混淆。

希望对您有所帮助。 干杯!!

【讨论】:

  • 优秀的cmets。 尽管如此, 请确保您不要尝试在您的 API 或它的客户端实现中实现“通过默默无闻的安全性”。客户端永远不是“值得信赖的”。您必须仔细设计您的 API,并且必须“强化”它的主机端实现,前提是您正在与之交谈的客户端以某种方式“已被彻底破坏”或“完全 i> '一个流氓。'"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
  • 2018-01-02
  • 2021-11-21
  • 1970-01-01
  • 2021-01-03
  • 2015-10-15
相关资源
最近更新 更多