我的应用程序包含我想加密的安全内容。我希望在本地存储密钥(主要是因为我的用户不使用任何身份验证机制进行登录)。
这些是我从Android系统中找到的解决方案。
虽然这听起来是个很好的提示,但它并没有真正增加安全性。
那么,在不要求用户身份验证的情况下保存私钥的最佳实践是什么呢?
发布于 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上为开发人员门户完成这一任务:
结论
对于安全的API密钥存储,没有一刀切的解决方案--您需要考虑各种因素,如团队大小或项目范围,以找到适合您的解决方案。我们希望本文中介绍的一些最佳实践将帮助您确保您的凭据,并避免不必要的麻烦和麻烦。
发布于 2017-06-26 11:55:24
Android将不允许其他应用程序访问私有共享首选项的内容,因此这可能是一个不依赖访问权限的存储场所,而不是数据没有存储在那里的事实。
但是,重要的是要在安全、随机的帮助下生成密钥,而不是捆绑到应用程序中。.apk的内容受到的保护要少得多,并且可以在任何根设备上访问。
https://stackoverflow.com/questions/33011065
复制相似问题