3

我刚刚完成了我的应用程序并完成了构建它。一切正常。

然后我注意到文件夹中有一个 XML 配置文件,所以我单击它。

就是这样,我的整个连接字符串以及我的远程 sql 服务器 IP 地址、登录用户名和登录密码,所有人都可以看到。

我尝试删除 XML 配置文件并运行程序,它只是在文件夹内创建了一个 App_Data 文件夹,并带有一个默认数据库。

有什么方法可以隐藏 XML 配置文件或使其不可读,因为它包含我所有的连接信息。

谢谢。

4

4 回答 4

3

查看这篇关于保护连接字符串的 MS 文章:

https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/protecting-connection-information

或者,将连接字符串硬编码到您的应用程序中(注意:恶意用户可以相当容易地对 .net 应用程序进行逆向工程),或者尽可能使用集成安全性。

于 2012-05-17T21:55:58.077 回答
1

您可以对其进行加密:http ://chiragrdarji.wordpress.com/2008/08/11/how-to-encrypt-connection-string-in-webconfig/

或尽可能使用集成安全性。

于 2012-05-17T21:54:33.813 回答
1

任何隐藏连接字符串的尝试只会使您和任何攻击者都更难以访问。这并不罕见,但不是很安全,而且确保定期密码轮换也存在问题。

如果可以,请切换到集成安全性。(包括Integrated Security=SSPI在连接字符串中,但没有用户名或密码。)连接将使用您自己的用户帐户(或运行您的代码的帐户)创建,假设

  • 您正在使用 MS SQL Server
  • SQL Server 位于同一系统或同一 AD 域中,因此能够识别该帐户。
于 2012-05-17T21:56:15.943 回答
1

无论您做什么,专用的调试器都几乎可以看到您的连接字符串。

请记住,如果您可以Connection.ConnectionString在调试会话中查看,那么使用 WinDBG 或 Visual Studio 的用户也可以。因此,即使您加密文件,用户也可以让您解密然后检查明文值。

这就是为什么许多需要来自服务器的信息的客户端应用程序(尤其是移动应用程序)通常不直接连接到数据库的原因。相反,它们通常连接到服务。然后,您根据您的服务授权和验证用户。

于 2012-05-17T22:22:23.023 回答