Android - 隐藏 API clientId 和 clientSecret 的最佳方式
Android - Best way to hide API clientId & clientSecret
我想听听您对隐藏 API 密钥和秘密密钥的最佳方法的意见。
我找到了 2 种方法:
- 像这样使用 NDK:https://medium.com/@abhi007tyagi/storing-api-keys-using-android-ndk-6abb0adcadad
- 像那样使用Gradle:http://www.techjini.com/blog/securing-api-key-and-secret-key-in-android
我知道风险 0 不存在,但最安全的解决方案是什么?
提前致谢
NDK 似乎是您最好的选择,虽然它不是 100% 安全的,但确实很难对其进行逆向工程。 gradle 方式似乎一点也不安全。
出于混淆和加密目的,您还可以利用 DexGuard。
最好的保护密钥的方法是不要将密钥放在应用程序中,为此,如果您使用的是高度安全的服务器(例如亚马逊服务器),则将您的密钥放在服务器上并在 运行时间。并且还在应用程序和服务器端应用 public/private 加密。
但如果您想继续使用该应用程序,那么使用 "NDK" 或使用 "Proguard" 两者都是应用程序级别的高度安全机制。
如果您使用 oAuth 获取令牌,您可以在服务器上使用客户端 ID 和客户端密码设置服务器。您的应用程序从您的服务器获取 oAuth 令牌。这样您就不必将客户端 ID 或客户端密码放入用户下载和运行的应用程序中。
为了在 Android 应用程序中隐藏密钥,我们开发了一个免费的开源替代品来替代 Dexguard。我们的 hidden-secrets-gradle-plugin 使用 NDK 和 XOR 运算符来混淆密钥以防止逆向工程。
您可以选择提供自定义 encoding/decoding 算法来提高密钥的安全性。
访问插件和所有详细信息:https://github.com/klaxit/hidden-secrets-gradle-plugin
我想听听您对隐藏 API 密钥和秘密密钥的最佳方法的意见。
我找到了 2 种方法:
- 像这样使用 NDK:https://medium.com/@abhi007tyagi/storing-api-keys-using-android-ndk-6abb0adcadad
- 像那样使用Gradle:http://www.techjini.com/blog/securing-api-key-and-secret-key-in-android
我知道风险 0 不存在,但最安全的解决方案是什么?
提前致谢
NDK 似乎是您最好的选择,虽然它不是 100% 安全的,但确实很难对其进行逆向工程。 gradle 方式似乎一点也不安全。
出于混淆和加密目的,您还可以利用 DexGuard。
最好的保护密钥的方法是不要将密钥放在应用程序中,为此,如果您使用的是高度安全的服务器(例如亚马逊服务器),则将您的密钥放在服务器上并在 运行时间。并且还在应用程序和服务器端应用 public/private 加密。
但如果您想继续使用该应用程序,那么使用 "NDK" 或使用 "Proguard" 两者都是应用程序级别的高度安全机制。
如果您使用 oAuth 获取令牌,您可以在服务器上使用客户端 ID 和客户端密码设置服务器。您的应用程序从您的服务器获取 oAuth 令牌。这样您就不必将客户端 ID 或客户端密码放入用户下载和运行的应用程序中。
为了在 Android 应用程序中隐藏密钥,我们开发了一个免费的开源替代品来替代 Dexguard。我们的 hidden-secrets-gradle-plugin 使用 NDK 和 XOR 运算符来混淆密钥以防止逆向工程。
您可以选择提供自定义 encoding/decoding 算法来提高密钥的安全性。
访问插件和所有详细信息:https://github.com/klaxit/hidden-secrets-gradle-plugin