【发布时间】:2016-02-12 07:07:19
【问题描述】:
我在我的应用程序中使用 yandex 和 google translate,当然有唯一的 API 密钥,但是每个人都可以通过反编译我的应用程序来窃取它。怎么隐藏?
【问题讨论】:
标签: java android api google-maps yandex
我在我的应用程序中使用 yandex 和 google translate,当然有唯一的 API 密钥,但是每个人都可以通过反编译我的应用程序来窃取它。怎么隐藏?
【问题讨论】:
标签: java android api google-maps yandex
如果我是你,我会租用服务器(可能是亚马逊)并创建一个数据库,然后用简单的加密字符串(哈希等)插入我们的 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 方法,它对你来说是安全的。
【讨论】:
简单地说,您根本无法在 APK 中或应用程序中执行此操作。如果有人想得到它,他们就会得到它。
你为什么要一开始就隐藏它们,它们被分配了你的 [Release|Debug] 密钥库的 SHA1 指纹和你的包名,没有人可以知道你的发布密钥库和它的密码。
【讨论】:
虽然您可能无法实现 150% 的安全性,但您可能希望在您的应用中采取措施来减缓可能的攻击者的速度。这将导致他们中的一些人放弃利用您的应用程序,仅仅是因为这样做不值得。
OWASP 移动安全项目已经发布了他们的"Top Ten Mobile Risks" 集合,其中特别是主题“破解密码学”和“缺乏二进制保护”在您的案例中很有趣。虽然即使此链接也没有为您提供简单的“操作方法”,但我认为它可以帮助您评估您的情况。
【讨论】: