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

时间:2018-10-17 05:16:51

标签: security environment-variables api-key

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

有很多讨论此主题的帖子,重申此为标准做法,但我仍然不清楚将密码/密钥实际存储为环境变量而不是简单地以JSON形式存储在回购外的用户主目录中的优点和缺点。 ?

除非我弄错了,否则如果服务器受到感染,环境变量和任意JSON文件将同样暴露给有权访问该计算机的人员。

当您考虑到持久性环境变量的密钥和机密可能仍然存储在适当的脚本(如.profile)中时,这两种方法似乎非常相似。

1 个答案:

答案 0 :(得分:0)

如果您存储API密钥,并且某人/某人获得了该程序的许可,例如通常必须使用这些密钥的程序,那么从理论上讲,这已经过去了。但是,实际上,您可以玩一些游戏来为对手加倍努力(令人沮丧的是您自己):

  • 在本地混淆密钥...在密钥库中备份密钥(加密),并且仅在使用char数组而不是字符串的编译程序中使用密钥(取决于c语言)。也许将此程序传递到混淆器中,这会使逆向工程变得困难。
  • 在本地创建一个加密的密钥存储,该密钥存储只会以某种方式将其“验证”为合法的程序的密钥公开。
  • 使用“蜂蜜”密钥,您可以主动监控该密钥的使用情况,这似乎是真实密钥,但是您可以将真实密钥以一种混淆的方式巧妙地存储在代码库中。
  • 将密钥远程存储(在“更安全”的服务器中),并强制呼叫通过那里的远程服务进行路由,该服务以某种方式检查消息的有效性,呼叫服务器的IP,mac地址等,并插入键并传递请求,作为各种代理。

希望我能给出更好的答案。归根结底,安全是尽力而为。保护您的外围设备,网络和服务器的安全,并使其很难找到关键的入侵后资源。这种困难可能使您有时间在数据泄露发生之前检测到入侵。