【问题标题】:Secure sensitive Android strings保护敏感的 Android 字符串
【发布时间】:2020-07-15 06:42:50
【问题描述】:

我想保护一些敏感字符串。例如:

  • 我的 Admob ID
  • 我的 Mapbox 私钥

看来 Admob ID 必须在 AndroidManifest.xml 中:

    <!-- AdMob -->
    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="@string/admob_app_id"/>

有什么方法可以保护这个 ID,让逆向工程师无法访问它?

我在 Fragment 中加载了我的 Mapbox 私钥:

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    val ac = activity?.applicationContext ?: return inflater.inflate(R.layout.fragment_map, container, false)
    Mapbox.getInstance(ac, resources.getString(R.string.mapbox_access_token))
    return inflater.inflate(R.layout.fragment_map, container, false)
}

还有什么方法可以确保这一点吗?我实现了cloud functions,它有一个安全的node.js 服务器——但上面的API 是原生的Android。

有什么想法吗?

【问题讨论】:

  • 您允许存在于客户端设备上的任何内容都不再是真正的私有内容。如果您加密数据,您还必须提供要解密的算法和数据才能使用它,并且所有这些都可以进行逆向工程。你所能做的就是让它变得更加困难。

标签: android node.js firebase kotlin google-cloud-functions


【解决方案1】:

APP中存在的任何信息都可以被反编译。你所能做的就是添加加密和解密算法,让APP不容易被破解。同时可以对so库进行签名验证,加强应用的安全性。

【讨论】:

    【解决方案2】:

    也许你应该检查这个是否完全隐藏所有资源(包括字符串):AndResGuard

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      • 2011-03-14
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多