Security 安全存储API密钥:环境与JSON

Security 安全存储API密钥:环境与JSON,security,environment-variables,api-key,Security,Environment Variables,Api Key,我知道存储敏感数据的标准方法是在环境变量中,特别是在git repo之外 有很多帖子都在讨论这个话题,重申这是一种标准做法,但我仍然不清楚将密码/密钥存储为环境变量与在repo之外的用户主目录中简单地存储为JSON的优缺点是什么 除非我弄错了,否则如果服务器受到破坏,那么环境变量和任意JSON文件都会同等地暴露给有权访问机器的人 这两种方法在考虑持久性环境变量时非常相似,密钥和秘密可能会被存储在一个适当的脚本中,比如.Prror。 如果你存储了API密钥,并且某个/某人获得了那些必须正常使用这些

我知道存储敏感数据的标准方法是在环境变量中,特别是在git repo之外

有很多帖子都在讨论这个话题,重申这是一种标准做法,但我仍然不清楚将密码/密钥存储为环境变量与在repo之外的用户主目录中简单地存储为JSON的优缺点是什么

除非我弄错了,否则如果服务器受到破坏,那么环境变量和任意JSON文件都会同等地暴露给有权访问机器的人


这两种方法在考虑持久性环境变量时非常相似,密钥和秘密可能会被存储在一个适当的脚本中,比如.Prror。

如果你存储了API密钥,并且某个/某人获得了那些必须正常使用这些密钥的程序的权限,则理论上是这样的。比赛结束了。然而,实际上,你可以玩一些游戏,让对手(和你自己)的生活变得艰难:

  • 在本地混淆密钥…使用密码短语在vault中备份密钥(加密),并且仅在使用字符数组而不是字符串的编译程序中使用密钥(取决于ofc语言)。可能会将这个程序传递到模糊器中,这会使逆向工程变得困难
  • 在本地创建一个加密的密钥存储,该存储只向以某种方式“验证”为合法的程序提供密钥
  • 使用一个“蜂蜜”键,您可以主动监视该键的任何使用情况,该键看起来是真正的键,但您可以将真正的键以模糊的方式巧妙地存储在代码库中的某个位置
  • 远程存储密钥(在“更安全”的服务器中),强制呼叫通过远程服务路由,远程服务以某种方式检查消息的有效性、呼叫服务器的IP、mac地址等,并插入密钥并作为代理传递请求

希望我能给出一个更好的答案。归根结底,安全是最大的努力。保护周界、网络和服务器的安全,并使其难以找到入侵后的密钥。这一困难可能会让您有时间在数据泄露发生之前检测入侵。

谢谢您的回答,但它没有解决我在问题中试图阐明的问题。我知道使用密码比不使用密码要好,而模糊处理可能是提高安全性的另一种方法。但我试图理解人们为什么使用环境变量,因为还有其他方法可以将api密钥或密码保留在git repo之外。