Winforms 如何在windows窗体应用程序中隐藏连接字符串

Winforms 如何在windows窗体应用程序中隐藏连接字符串,winforms,Winforms,大家都知道,exe文件中的硬编码可以通过一些软件很容易地看到,例如code reflector,我想知道我是否可以隐藏我的连接字符串,其中包含连接到windows窗体应用程序中数据库的sql server用户名和密码的信息,以防通过任何代码反射器看到,这样,除我之外的任何人都可能无法在未经我的许可的情况下使用我的应用程序。如评论所示,您最好使用集成安全性,但是如果您针对的是具有混合模式身份验证的SQL Server,则可以使用数据保护API加密app.config中的连接字符串。以下是一篇关于该

大家都知道,exe文件中的硬编码可以通过一些软件很容易地看到,例如code reflector,我想知道我是否可以隐藏我的连接字符串,其中包含连接到windows窗体应用程序中数据库的sql server用户名和密码的信息,以防通过任何代码反射器看到,这样,除我之外的任何人都可能无法在未经我的许可的情况下使用我的应用程序。

如评论所示,您最好使用集成安全性,但是如果您针对的是具有混合模式身份验证的SQL Server,则可以使用数据保护API加密app.config中的连接字符串。以下是一篇关于该主题的精彩文章:

保护应用程序机密,例如数据库连接字符串 和密码,需要仔细考虑一些相关问题 数据的敏感程度、谁可以访问这些数据等因素 it,如何平衡安全性、性能和可维护性,等等 向前地本文介绍了数据保护的基本原理和 比较了可用于保护的各种技术 应用程序设置。作者讨论了应该避免的问题,例如 在源代码中隐藏密钥并使用本地安全机构。在里面 此外,他还提出了一些有效的解决方案,如数据 保护API


将您的cs封装在DLL中怎么样?不要这样做。在连接字符串中使用integratedsecurity=SSPI,以便使用安全的Windows身份验证。这是您需要留给LAN管理员的事情,无论如何,不要参与客户的安全策略。@imrankhan您的意思是混淆吗?或者更棒的是@HansPasant我为一个教练中心设计了我的申请,该中心在该市有20多个分支机构。如果我使用integratedsecurity=true,他们将复制我的数据库并将其附加到sql server中的另一个分支中,从而可以轻松地运行我的应用程序。我认为使用uid和pwd比你建议的要好,因为至少他们需要使用代码反射器来了解uid并传入CST。u提供的第二个链接似乎是一个可接受的解决方案,但是如果有人可以通过代码释放器在exe文件中c cs,他不能c我将用于加密或解密???如果你希望人们对你的exe和dll进行反向工程,你应该对你的代码进行模糊处理,并提出一系列策略,使它成为一个太大的挑战:DPAPI有。使用机器密钥加密的秘密可以由任何访问机器密钥的进程解密。用用户密钥加密的秘密可以由同一用户启动的任何进程解密。我在7月份问过你这个问题。现在我想知道一些关于同样的问题。如果我使用UserKey加密一些数据,然后想在另一台机器上解密,那么如何在另一台机器上创建具有相同配置文件的相同用户