首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android凭证存储:在哪里保存私钥?

Android凭证存储:在哪里保存私钥?
EN

Stack Overflow用户
提问于 2015-10-08 08:55:03
回答 2查看 2.4K关注 0票数 7

我的应用程序包含我想加密的安全内容。我希望在本地存储密钥(主要是因为我的用户不使用任何身份验证机制进行登录)。

这些是我从Android系统中找到的解决方案。

  • Android Keystore系统:这听起来是一个完美的解决方案,它大大提高了本地存储密钥的安全性,但它只为API 18+提供加密协议,而我的应用程序需要支持API 14。
  • KeyChain API:它主要帮助在应用程序之间共享安全密钥,还需要用户参与选择证书链。
  • 从Android 安全与设计,如何保存Android公钥: 要确保您的公钥不受恶意用户和黑客的攻击,请不要将其作为文字字符串嵌入到任何代码中。相反,在运行时从片段构造字符串,或者使用位操作(例如,XOR和其他字符串)来隐藏实际的键。密钥本身不是秘密信息,但您不希望让黑客或恶意用户很容易将公钥替换为另一个密钥。

虽然这听起来是个很好的提示,但它并没有真正增加安全性。

那么,在不要求用户身份验证的情况下保存私钥的最佳实践是什么呢?

EN

回答 2

Stack Overflow用户

发布于 2021-03-11 12:55:03

查看这五种用于安全API密钥存储的最佳实践,并避免暴露密钥带来的麻烦:

1.不要将API密钥直接存储在代码中.

在源代码中嵌入API密钥似乎是一种实用的想法,但这是一种安全风险,因为源代码可能最终出现在许多屏幕上。相反,直接将API密钥和秘密存储在环境变量中。环境变量是动态对象,其值是在应用程序之外设置的。这将使您能够轻松地访问它们(例如,通过在Python中使用os.getenv() 方法,或者在Node应用程序中使用dotenv包),并避免在推送代码时意外地暴露密钥。

2.不要将API密钥存储在客户端.

如果您正在开发一个web应用程序,请记住始终将您的凭据存储在后端。从那里获取API结果,然后将它们传递给前端。如果您是一个移动开发人员, 将您的凭据存储在应用程序之外是非常重要的,因为一个经验丰富的用户 轻松地保留了工程师 您的应用程序并找到您的凭证。尝试将您的API凭据存储在您拥有的一个单独的服务器上,并使用同一台服务器在将API结果传递给客户端之前获取API结果。

3.不要在代码存储库上公开未加密的凭据,即使是私有的凭据

我们都喜欢帮助社区和在线共享代码,但是很容易忘记代码中的凭据,让它们暴露在世界上。存储库经常被克隆并分叉到新项目中,使新开发人员能够访问他们完整的历史记录。存储库历史记录中的任何凭据都将存在于从该源生成的所有新存储库中。

即使是私有存储库也会使您容易受到黑客攻击,因此您应该考虑在任何存储库中公开的任何API密钥,无论是公开的还是私有的,都是被破坏的。相反,在发布之前,通过使用gitignore 文件来指定Git要忽略的文件,或者在发布之前只记得散列凭据,从而删除API密钥和机密。

4.考虑使用API秘密管理服务

将API凭据存储为环境变量将为您节省很多痛苦,但是如果您正在与一个大型团队一起工作,您可能会发现很难让每个人保持同步。一个方便和安心的解决方案是使用诸如AWS秘密管理器这样的秘密管理服务。这不仅可以保护您的密钥,还可以帮助您检索和管理整个团队的凭据。

5.如果怀疑有违反的行为,则生成新密钥

如果您认为您的API凭据已被破坏,请保持冷静,只需撤销您的密钥。通过以下步骤,可以轻松地在Amadeus上为开发人员门户完成这一任务:

  1. 登录到你的帐户。
  2. 访问您的自助服务工作区
  3. 选择所讨论的应用程序
  4. 单击“刷新”按钮生成一个新键。

结论

对于安全的API密钥存储,没有一刀切的解决方案--您需要考虑各种因素,如团队大小或项目范围,以找到适合您的解决方案。我们希望本文中介绍的一些最佳实践将帮助您确保您的凭据,并避免不必要的麻烦和麻烦。

票数 2
EN

Stack Overflow用户

发布于 2017-06-26 11:55:24

Android将不允许其他应用程序访问私有共享首选项的内容,因此这可能是一个不依赖访问权限的存储场所,而不是数据没有存储在那里的事实。

但是,重要的是要在安全、随机的帮助下生成密钥,而不是捆绑到应用程序中。.apk的内容受到的保护要少得多,并且可以在任何根设备上访问。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33011065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档