在web.config中连接到MSSQL时没有连接字符串

问题描述:

我有一个.NET应用程序托管在一个Web服务器和一个MSSQL数据库托管在不同的服务器上。在web.config中连接到MSSQL时没有连接字符串

作为安全检查清单的一部分,我不应该在我的web.config文件中提到数据库证书(连接字符串)。 (不在任何文件中)

如何连接到数据库而没有在我的web.config中提到的细节。

任何帮助将不胜感激。

谢谢

+0

你可以搬到Azure吗?您可以将连接字符串放入角色配置中。这不会被存储在服务器上的文件中。 AWS上可能有类似的情况。 –

+0

保持连接字符串散列值,这是你最好的选择 –

您有几个选项。

  1. 您可以在SQL Server和IIS应用程序池之间使用基于服务的帐户。这将允许Windows无需密码即可处理所有身份验证。 Stack Overflow question on this
  2. Encrypt the web.config
  3. 将连接字符串放入代码中。然后,当您创建SqlConnection或任何其他类型的数据库连接时,请使用重载传入连接字符串。但是这实际上并不比web.config好,因为您可以反编译程序集并查看连接字符串。
+0

加密web.config会给安全性带来误解。鉴于对机器的访问,可以使用以下命令对其进行解密:aspnet_regiis -pd“connectionStrings”-app“/ SampleApplication” –

+0

@ShirazBhaiji完全同意。加密web.config是一种保护文件的方法,当某人有权访问该文件时,该文件不具有对服务器或用于加密该文件的密钥对的物理访问权限。任何加密都是如此。 –

+1

@ShirazBhaiji,如果用户有文件访问服务器,他们可以获得比webconfig数据更多的东西,比如dll并使用反射来获取源代码。 – gunr2171

你可以存储连接字符串:

  • 硬盘在你的代码
  • 在注册表项

你应该有不包含用户名的连接字符串编码和密码,而是使用可信连接,该连接使用应用程序池的标识。

+0

你的代码中的硬编码仍然在服务器上的一个文件中。可能它不像web配置那么明显,但它仍然存在,任何人都可以看到它们是否反编译你的程序集。 –

你可以尝试使用声明的连接字符串

http://asphive.wordpress.com/2013/01/28/connection-strings-without-web-config/

你不能加密的Web配置的数据库凭据?