【发布时间】:2015-02-15 02:03:15
【问题描述】:
我有一个名为Bashoto 的用于构建实时本地应用程序的平台,我将构建一个Android 客户端。
Bashoto 应用程序可以选择进行身份验证,这是通过生成一次性使用、过期 JSON Web Token(简称 JWT)以及应用程序令牌和验证令牌有效的签名来完成的。每个连接都会有一个唯一的 JWT,它是通过使用 Secret 对内容进行签名而生成的。
在 Web 环境中,这意味着客户端后端拥有 Secret 的副本,对令牌进行签名并将其传递给客户端前端,然后在对 BashotoIO 服务器的请求中使用。
在移动环境中,在本例中是 Android,存在的问题是在应用程序代码本身中保留该 Secret 是一个潜在的攻击媒介,因为有人可以检查 APK 来找到它。
在 Android 应用程序中真正保持 Secret 秘密的最佳方式是什么,同时仍然保持 Bashoto 集成的简单和精简?
我希望用法看起来像这样
Bashoto bashoto = Bashoto.fromAppKey("my-app-key");
bashoto.locate();
BashotoTopic topic = bashoto.topic("my-topic-name"); //token signing and connection happens here
topic.send("Some message that only gets seen by nearby people");
【问题讨论】:
-
有一个简单的规则。如果您真的希望它保密,请不要将其放在设备上。无论您做什么,您的代码都必须能够找到秘密,这意味着黑客也可以找到它。你唯一能做的就是减慢它们的速度。
标签: android api security mobile jwt