android-library - 保护 Android 库

标签 android-library android-security

我正在为金融科技产品开发一个 Android 库。 我想将 AAR 文件的使用限制为仅经过身份验证的用户。 我们对每个客户端都使用访问 key 进行服务器验证。 还有其他客户端验证吗? 保护我的库的最佳机制是什么?

最佳答案

最好的解决方案是在服务器端验证托管应用程序的包名称和签名的哈希 key 。

不要将哈希 key 作为 SDK 的参数,让 SDK 在运行时读取它并将其传递给服务器。

public String getCertificateHash(Context context) {
        String hashKey = "";
            try {
                PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
                for (Signature signature : info.signatures) {
                    MessageDigest md = MessageDigest.getInstance("SHA");
                    md.update(signature.toByteArray());
                    hashKey = Base64.encodeToString(md.digest(), Base64.DEFAULT);

                }
            } catch (PackageManager.NameNotFoundException e) {
                LogUtil.printObject(e);
            } catch (NoSuchAlgorithmException e) {
                LogUtil.printObject(e);
            }
            return hashKey.trim();
        }

关于android-library - 保护 Android 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47279873/

相关文章:

android - 在 Android 库项目中使用 Firebase 云消息传递

ssl - Google Play 警告 : WebViewClient. onReceivedSslError 处理程序

android - 如何在库项目中引用 Assets

android - HListView 无法实例化 Android Eclipse 项目库

android - 引用库项目 .. 为 R 文件提供 NoClassDefoundError

android - 在 Android 29 上运行可执行文件的路径是什么?

android - 如何在android中实现未被绕过的SSL pinning

android - android库项目中的FileProvider权限

对 Jetpack Compose 的反射(reflection)

android - 如何防止使用泄露的 keystore 和密码?