4

我在我的应用程序中使用 yandex 和 google translate,当然有唯一的 API 密钥,但是每个人都可以通过反编译我的应用程序来窃取它。我该如何隐藏它?

4

3 回答 3

1

如果我是你,我将租用一台服务器(也许是亚马逊)并创建一个数据库并使用简单的加密字符串(哈希等)插入我们的 api 密钥。

ID - Name - androidKey - key

1 - GoogleAPI - AJKBSASHUA9 - yourAPIKey
2 - YandexAPI - 5A6S5D6A53C - yourAPIKey
.
.
.

然后你可以创建一个由你的 android packageName 运行的服务;

http://example.com/API/getAPIKey/
?packageName="yourPackageName"
&androidKey="AJKBSASHUA9"

如果您使用POST方法,它对您来说是安全的。

于 2015-11-11T08:15:39.323 回答
1

简而言之,您根本无法在 APK 内部或应用程序内部执行此操作。如果有人想得到它,他们就会得到它。

  • 你要破译它们,我会在应用程序中找到密钥。
  • 您要将它们放在网络上并在安装后获取它们,我将启动我的手机并获取它们。

以及为什么要首先隐藏它们,它们被分配了您的 [Release|Debug] 密钥库的 SHA1 指纹和您的包名称,没有人可以拥有您的发布密钥库及其密码。

于 2015-11-11T08:15:52.330 回答
1

虽然您可能无法实现 150% 的安全性,但您可能希望在您的应用程序中采取措施来减缓可能的攻击者的速度。这将导致他们中的一些人放弃利用您的应用程序,仅仅是因为不值得付出努力。

OWASP 移动安全项目已经发布了他们的“十大移动风险”合集,其中特别是“破解密码学”和“缺乏二进制保护”主题在您的案例中很有趣。虽然即使此链接也没有为您提供简单的“操作方法”,但我认为它可以帮助您评估您的情况。

于 2015-11-11T08:56:31.763 回答