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