Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何隐藏XML配置文件_C#_Wpf_Xml - Fatal编程技术网

C# 如何隐藏XML配置文件

C# 如何隐藏XML配置文件,c#,wpf,xml,C#,Wpf,Xml,我刚刚完成了我的申请并完成了构建。一切正常 然后我注意到文件夹中有一个XML配置文件,所以我单击它 这就是我的整个连接字符串,还有我的远程sql server ip地址、登录用户名和登录密码,所有人都可以看到 我尝试删除XML配置文件并运行程序,它只是在文件夹中创建一个带有默认数据库的App_数据文件夹 有没有办法隐藏XML配置文件或使其无法读取,因为它包含我的所有连接信息 谢谢。您可以对其进行加密: 或者尽可能使用集成安全性。查看这篇有关保护连接字符串的MS文章: 或者,将连接字符串硬编码到

我刚刚完成了我的申请并完成了构建。一切正常

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

这就是我的整个连接字符串,还有我的远程sql server ip地址、登录用户名和登录密码,所有人都可以看到

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

有没有办法隐藏XML配置文件或使其无法读取,因为它包含我的所有连接信息


谢谢。

您可以对其进行加密:


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

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


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

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

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

  • 您正在使用MS SQL Server
  • SQL Server位于同一系统或同一AD域中,因此能够识别该帐户

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

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


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

还假设SQL Server是目标数据库。这是真的。我将编辑以澄清这一点。问题只提到.NET,没有设置环境。您好,是的,我的远程服务器上的目标数据库是SQL server。但是,如果他们使用这种连接,没有用户名或登录密码,他们将如何连接到数据库?因为他们没有指定要访问的任何登录凭据it@MarkMackanga-您的代码在用户帐户下执行。您可以使用
sp\u addrolemember
将SQL Server角色添加到此帐户,然后它将能够连接。对于SQL Server 2005(或任何从其升级的产品),默认情况下,
Administrators
组将拥有足够的权限,因此您可以在定义生产权限之前开始尝试使用这些权限。哦,好的,我现在明白了。是的,我就是这么做的。感谢您的回复和快速回复-1这不是一个切实可行的解决方案。密钥将位于用户的计算机上(如果解密不顺利的话),用户帐户还必须访问该密钥才能让应用程序使用它。如果用户有权访问它。。。你已经通过模糊处理实现了安全性。我不认为这个wpf应用程序使用的是asp.net(基于标记),该链接是针对asp.net的-问题的标记是wpf,尽管你可以欺骗它工作。或者可以在代码中完成-@RichardOD您仍然有一个非常严重的密钥管理问题。@Conrad-我同意。我不推荐这种方法。我个人认为加密通常只对服务器有用。你能嵌入xml配置文件吗?它仍然不会受到坚决的黑客的攻击,但总比让文件清晰可见要好。我怀疑是否有任何100%有效的方法将此信息存储在客户端程序集中;您最好连接到一个服务,但这是一个很大的设计变化