首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在环境变量中存储API密钥真的安全吗?

在环境变量中存储API密钥真的安全吗?
EN

Security用户
提问于 2014-01-31 23:22:30
回答 2查看 9.1K关注 0票数 16

本站说,最好将环境变量中的API键排除在代码之外。还有这里

安全地存储凭据,您应该非常小心地确保您的凭据被安全地存储。如果有人获得您的api_key或access_token的发送或全部许可,他们将能够发送所有比特币从您的帐户。特别是,除非您已经安全地加密了这些凭据,否则您应该避免将这些凭据存储在您的代码库(它会添加到版本控制中)或数据库中。将凭据从代码库和数据库中分离是一个很好的做法。默认情况下,所有帐户上的API密钥访问都被关闭。因此,如果您决定进行API密钥集成,您需要首先启用它,并从那时起采取必要的步骤来安全地存储它。如果您觉得API密钥已被破坏,您可以随时重新生成它(或者禁用它)。

但是,每当程序崩溃时,它通常会将环境作为崩溃报告的一部分发送:

https://lists.launchpad.net/openjdk/msg01149.html

环境变量:.。

所以..。是哪一种?我不明白为什么在环境中存储密钥比源代码更安全。如果有人进入系统,他们可以同时访问这两个系统。

EN

回答 2

Security用户

回答已采纳

发布于 2014-02-01 07:57:19

如果您的计算机能够在没有密码的情况下使用API,那么这些信息必须存储在系统的某个地方。将其存储在环境变量中的目的是使其不与源一起签入版本控制,但实际上,理想的做法是使用类似HSM或TPM之类的方法以加密方式存储API密钥,以便以编程方式检索API密钥,或将其存储在使用它的服务或应用程序的帐户凭据加密的磁盘上。

我个人对使用环境变量会犹豫不决,但如果您只是担心意外泄露密钥(对于访问您的框的人来说不是本地安全),那么这是如何分离代码和密钥的一种选择,而不是最好的。

票数 13
EN

Security用户

发布于 2014-02-02 05:07:30

使用环境变量可能是非常糟糕的建议。正如您自己指出的,环境变量可能会在某些情况下显示,例如,在PHP世界中,可能会要求您提供一个phpinfo页面,作为对第三方的支持过程的一部分。还要考虑如何以及何时设置环境变量。如果在web服务器启动时设置了该变量,则运行的任何脚本都可以看到该变量。当黑客利用一个网站的弱点来存放他们可以运行的任意脚本(最近的估计显示,每天有10's的数千个站点被攻破),他们可能在几秒钟内就能获得密钥。如果密钥是从代码基中的单个文件中设置的,并且可能是通过受保护的代码或本机代码设置的,那么黑客可能需要更长的时间才能识别密钥。如果您有良好的入侵检测到位,也有一个很好的机会,您将能够阻止他们之前,他们能够分析你的网站,以确定哪里的密钥设置。披露:我与ionCube有关联。

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

https://security.stackexchange.com/questions/49725

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文