2015-10-13 17 views
7

我在将Azure MVC 5应用程序放在一个非常令人沮丧的体验。我一直在阅读以下页面:http://www.asp.net/identity/overview/features-api/best-practices-for-deploying-passwords-and-other-sensitive-data-to-aspnet-and-azure混淆了在用于Azure部署的Web.config中存储密码的正确过程是什么

但我没有设法把我的头如下:

安全警告:不要添加你的秘密config文件到您的项目或将其检入源代码管理。默认情况下,Visual Studio将生成操作设置为内容,这意味着文件已部署。有关更多信息,请参阅为什么我的项目文件夹中的所有文件都未部署?虽然您可以对secrets .config文件使用任何扩展名,但最好将其保存为.config,因为配置文件不由IIS提供。另请注意,AppSettingsSecrets.config文件是web.config文件中的两个目录级别,因此它完全不在解决方案目录中。通过将该文件移出解决方案目录,“git add *”不会将其添加到您的存储库。

和:

安全警告:与AppSettingsSecrets.config文件,外部连接字符串文件必须在同一目录作为根web.config文件,所以你必须拿注意事项确保您不会将其检入到您的源代码库

问题是:当我上传带有外部文件的Web.config文件而没有被包含时,我被“系统找不到指定的文件”,所以为了让它消失,我必须包含.config文件破坏了微软发布的目的。

我真的真的不明白。我在Azure的门户中添加了connectionStrings和appSetting的键。什么是正确和安全的方式把我的密码和秘密在线?我错过了什么?是因为我在调试模式下运行?

根据此: How can I secure passwords stored inside web.config?

没有什么可担心的访问Web.config文件...

但这只是无视微软的职位。

谢谢。

回答

3

我发现以下技术是最简单的方法。

取而代之的是将这些设置的置入web.config,我将测试值保留在那里。然后我把部署值到通过Azure的门户网站天青的应用程序设置部分:

enter image description here

当网站运行时,这些设置将优先于什么是在web.config。这有助于避免外部文件,让我保持团队可以共享的理智的开发配置,并使部署变得非常简单。

+0

关闭,但你甚至可以使用连接字符串部分,而不是应用程序设置部分,以更好地保护你的秘密 –

+0

明白你的意思,但我不认为在这里可以获得所有额外的安全性,现在你在配置的连接字符串部分读取非连接字符串设置时会产生额外的混乱。 –

+0

感谢您的回复。在连接字符串的情况下...如果我的计算机上只有localdb连接,并且在Azure上配置了数据库连接,会否影响?数据库连接会取代localdb吗?我记得读到connectionStrings被覆盖,而应用程序设置被合并或替换(如果发现重复)。 –

0

最好的方法是在门户的连接字符串部分设置您的秘密。在那里设置的任何值都会覆盖您在web.config文件中指定的值。

这样,他们只会暴露给管理员访问网站本身的人。完全访问源代码甚至不足以获得秘密值。

enter image description here

更多细节here

相关问题