在machine.config中存储连接字符串VS将它们存储在web.config中(Storing

2019-06-26 20:13发布

对于专用服务器,是它更好地存储在web.config中或machine.config中的连接字符串? 什么是每一种方法的优点和缺点?

谢谢

编辑:我很担心安全问题在这里,所以,问题是关于哪种方法更安全。

Answer 1:

我总是会与理由web.config中走那就是,每个人都希望它是。 有一个在给具有维护网站通过存储在一个不寻常的地方连接字符串的任何更多困难的人是没有意义的。

额外

基于附加信息的OP感兴趣的安全方面,而不是和一般的原因,我已经添加了以下内容。

我仍然不会连接字符串存储在machine.config。 如果你机器上运行的任何.NET应用程序可以访问你的连接字符串。

web.config文件是受保护的文件。 除非你做一些错误配置IIS它不会成为它在默认情况下。



Answer 2:

我宁愿让我的连接字符串在machine.config。

我的连接字符串是DEV,QA和PROD环境之间的不同,如果我让他们在web.config我不能安全地吹走我的目标目录,并复制了新的代码。 或者,我会记得要部署的一切,但在web.config,这造成的问题时,在web.config变化的其他部分。

这取决于你的情况,但是当它到达其在错误的环境中的错误的连接字符串的有点复杂,风险实在是太巨大。 事实上,我们不得不在那里测试被击中,因为连接字符串被意外移动错误的数据库的情况。 Machine.config中被用于机器的特定项目 - 由此而得名。 它永远不会被移动从机器到机器。

所以在我的machine.config我有多个连接字符串像blogConnString,forumConnString,projectxConnString,等等。我不认为这是混合设置为不同的网站,我认为这是保持机器级别设置在maching.config。

你是担心安全问题,我认为一旦他们对他们同样确保了框。 但是,如果连接字符串是在web.config它通常在源头控制,开发商的办公桌结束了,在备份文件,在安装计划,部署套等,这使得在web.config方式不太安全的给我。

最后,另一种方法是把它在一个完全不同的配置文件(说WebEnvironment.confg),也就是那么你的web.config引用。 该文件会坐在一个目录,是不是身体在你的网站,但实际上是你的站点下。 更多细节是这里。



Answer 3:

我个人而言,绝不会存储我的连接字符串在我machine.config文件,永远只能在web.config。

你说这是一个专用的服务器,但该服务器专用于单个Web应用程序?
如果没有,你现在已经有一个文件(machine.config中)这是有效地共享配置数据的多个(可能是不相关的)的Web应用程序。 取决于这些应用程序的数量,并且如果你需要将它们移动到另一台服务器,使用machine.config中可以得到非常杂乱。

即使服务器专用于单个Web应用程序,你可能会进行开发,并在其他机器上测试。 由于machine.config中是不正常的是随机配备一个ASP.NET Web应用程序项目的文件集内的文件,你可能会走出自己的方式在machine.config部署到每个不同的开发/测试的它们内部/生产机器,并确保其他(非连接字符串)相关的配置是该机器正确。

使用web.config文件来存储数据库连接字符串,使完全合乎逻辑的意识,完全是由几乎所有的ASP.NET开发人员设想,即使你将使用完全相同的数据库完全相同的数据库服务器上的多个应用程序。 在每个应用程序的web.config保持这样的构造允许每个这些应用程序的更独立的,在其他一些“外部”文件不依赖。

我一般查看该框架本身使用的machine.config和东西,它属于一个计算机上,是特定于该机器。 我很少去触摸它自己。 我认为在web.config的文件,该文件是你的Web应用程序项目的重要组成部分,并作为其移动和被部署到不同的机器“绕着”与该项目。

另外,不要忘记,很多的什么在machine.config中定义可以在每个应用的基础上通过重新定义特定应用程序的web.config文件中的某些配置元素“覆盖”。

当然,也有一些正当的理由来编辑/更改machine.config文件(如Web场中的多个Web服务器可能需要的东西像加密/解密密钥将被同步在machine.config中),但是,我不信的数据库连接字符串的那些有效的原因之一。



Answer 4:

如果安全是你最关心的,集中锁定下来的数据库和用户权限。 网络/机器的.config之间的安全差异是最小的。 科林的答案是正确的。 我已经投了或评论有,但我没有莫克西呢!



Answer 5:

有很多的好点,在这里。 JBrooks的环境是最接近我的,但最终,我把连接字符串中的Machine.config不同意。

我同意OJ而不是他列举,这里的原因。 我想指出,如JBrooks说,连接字符串很可能会使用在开发和生产环境不同的凭据。 我们的内联网发展的数据库,例如,都具有相同的一套简单的凭证,而我们的生产数据库中每一个具有复杂的密码不同的凭据。 因此,有很好的理由不把你的连接字符串在Web / App.config文件,而是在本地到目标服务器上的文件。 我喜欢的注册表,我自己,但我知道,这不是在所有的支持。 显然,在Machine.config文件是存在的,以提供解决方案。

不,我同意辛普森因为Machine.config中驻留在.NET Framework和可以通过微软来改变。 但微软一无所知的的connectionStrings.config我们的生产服务器上的文件。 该文件由网络/ App.config中的文件载有:

<connectionStrings configSource="path\to\connectionStrings.config"/>

blowdart作出关于加密的一点-总是一个好主意。 但最终,为了充分保护您的数据库凭据的唯一方法是定期更改它们。



Answer 6:

安全明智的,你可以看看你的存储连接字符串中有自己的加密config文件,你的web.config文件将有一个参考。



Answer 7:

所有的好点。 在我的环境,数据库共享在一个web.config力量冗余存储等等。 在这里,我们使用标准的SQL数据库,每个人都访问。 一个单独的配置文件是优选的。 这使得标准化,安全性和必要时的应用程序部署到改变web.config中的消除。



文章来源: Storing connection strings in machine.config vs storing them in web.config