什么是存储和使用敏感配置信息(如连接字符串)的最佳方式。我曾经将它们存储在app.config,web.config中,现在以config.json作为纯文本存储。这是不安全的,特别是在将这些文件检入公共可用的源代码控制时。什么是最安全的方式来存储这种类型的数据,并在应用程序内使用?安全存储敏感配置数据,如连接字符串
回答
经过几次尝试之后,我发现的最佳解决方案是在Windows系统上使用环境变量。不确定一旦我部署到Azure后,这种方式将如何工作,但现在它按预期工作。在我的ASP.NET核心在Startup.cs我添加AddEnvironmentVariables:
public Startup(IHostingEnvironment appEnv)
{
var builder = new ConfigurationBuilder()
.SetBasePath(appEnv.ContentRootPath)
.AddJsonFile("config.json")
.AddEnvironmentVariables();
Configuration = builder.Build();
}
这里是连接字符串:
来使用它:
string connStr= Startup.Configuration["Data:WorldContextConnection"];
在这种我可以检查每个文件到GitHub中,唯一的情况是我需要总是将这些环境变量添加到我将要处理的系统中。
我会使用命令行变量,然后只是在需要的值中启动可执行文件传递。这种方法在启动Azure服务时也更加出色。 –
我喜欢你的建议,是的,这是另一个非常好的和安全的选项,不知道它可以与Azure实现,将尝试一定,谢谢 – lucas
特别是在将这些文件检查为公开可用的源代码管理时。
不这样做。
这就是正好把你的秘密设置放在配置文件中,因为你不想与世界分享它们。把它们放在机器上的文件上是完全正确的 - 人们会期望使用你的软件的人已经将他们的机器固定在某个点上。
如果你不能信任你的用户,那么你需要存储您机器上的配置,给用户一个访问令牌(比如用户名和密码,或使用OAuth凭证),他们可以用它来说话给你,然后你保持配置安全和秘密。
同意,我仍然想检查配置文件,因为我保留了一些其他可以暴露给公众的设置,但是在其他地方还有那些非常敏感的数据,例如conn字符串。我设法实现了我之前使用环境变量的方式。感谢您的回应 – lucas
您*可*总是提供一种方法来创建默认配置文件。 –
- 1. Silverlight安全 - 敏感数据
- 2. 如何将敏感数据存储在Java配置文件中?
- 3. 如何将敏感数据安全地存储在MySQL数据库中?
- 4. 存储敏感值在安全的位置
- 5. 在heroku中存储数据库连接字符串的安全方法
- 6. 如何在PHP中安全地存储包含敏感数据的cookie?
- 7. 一个代号 - 存储敏感数据
- 8. 在Windows Phone中存储敏感数据
- 9. 用PHP和MySQL存储敏感数据
- 10. 存储敏感数据的EntityFramework
- 11. 在mongodb/node中存储敏感数据
- 12. 存储应用程序敏感数据
- 13. 在indexedDB中存储敏感数据?
- 14. 在Silverlight中存储敏感数据
- 15. 将敏感数据存储在本地Stoarge或会话存储中是否安全?本地存储允许对敏感数据进行任何攻击
- 16. 排除连接字符串中的敏感数据的优点和缺点?
- 17. 在WCF数据服务的服务配置中存储连接字符串
- 18. 敏感数据转储
- 19. 将连接字符串保存在配置文件中有多安全
- 20. 安全解析数字和区域设置敏感
- 21. 是否将敏感数据临时存储在iVar中构成安全威胁?
- 22. 在智威汤逊有效负载中存储敏感数据安全吗?
- 23. SQL连接字符串安全
- 24. web.config中的连接字符串安全
- 25. 如何在git存储库上保持ASP.net连接字符串密码安全?
- 26. 如何安全地存储和访问连接字符串详细信息?
- 27. 加密/安全数据库连接字符串在php
- 28. 如何存储数据库连接信息是安全的?
- 29. 如何安全地存储mysql连接数据?
- 30. 数据库连接字符串位置
1. app.config和web.config允许在连接字符串上进行加密。 2.不要检查敏感信息到源代码控制中,那不是源代码控制的目的。 3.不确定你的意思是“某种设备的个人密钥” - 这太模糊,无法回答,因为这可能是任何事情。 – Igor
某些设备的个人密钥==任何东西都是敏感的 – lucas
这仍然很模糊。这可能是用户特定的,它可能是一些静态(中央设备),如数据存储,也许有很多,也许只有一个关键。问题在继续。还有什么/谁读了那个“钥匙”?一个用户,任何执行代码? – Igor