我在我的应用程序中使用yandex和google translate,当然还有唯一的API密钥,但每个人都可以通过反编译我的应用程序来窃取它。我怎么能隐藏它?
答案 0 :(得分:1)
如果我是你,我将租用服务器(可能是亚马逊)和创建数据库并使用简单的加密字符串(哈希等)插入我们的api密钥。< / p>
ID - Name - androidKey - key
1 - GoogleAPI - AJKBSASHUA9 - yourAPIKey
2 - YandexAPI - 5A6S5D6A53C - yourAPIKey
.
.
.
然后你可以创建一个由你的android packageName运行的服务;
http://example.com/API/getAPIKey/
?packageName="yourPackageName"
&androidKey="AJKBSASHUA9"
如果你使用 POST 方法,那么对你来说是安全的。
答案 1 :(得分:1)
简单地说,你根本不能在你的APK内部或在应用程序内部这样做。如果有人想要得到它,他们就会得到它。
为什么你会在第一时间隐藏它们,它们被分配了你的[Release | Debug]密钥库的SHA1指纹和你的包名,没有人可以拥有你的发布密钥库及其密码。
答案 2 :(得分:1)
虽然您可能无法达到150%的安全性,但您可能需要在应用中采取措施来减慢可能的攻击者速度。这将导致他们中的一些人不再利用你的应用程序,只是因为它不值得努力。
OWASP移动安全项目发布了他们的"Top Ten Mobile Risks"集合,其中特别是“破碎密码术”和“缺乏二元保护”主题在您的案例中很有意思。即使这个链接没有为您提供简单的“如何”,我认为它可以帮助您评估您的情况。