如何保护connectionString

本文关键字:connectionString 保护 何保护 | 更新日期: 2023-09-27 18:29:15

我有一个应用程序,应该在那里连接到SQL Server。它受密码保护。所以,当我第一次启动程序时,我会动态创建connectionString并将其保存在app.config中。下次我可以使用创建的connectionString。我在谷歌上搜索了一下,决定做以下事情:在app.config中加密connectionString,并在代码中保存密码。当我下次想连接到数据库时,我会解密connectionString,添加userId和密码,并使用新的connectionString连接到服务器。在关闭程序之前,我将从connectionString中删除userId和密码,并再次对其进行加密。但我有一些问题:

1) 这是一个好的解决方案吗?

2) 当我第一次启动程序时,我需要创建连接字符串,所以代码中的某个地方应该是userId和password。如何处理这个问题?

如何保护connectionString

据我所知,您可以动态创建连接字符串。因此,您也可以从代码中加密此部分。默认情况下,加密算法会使用您的机器密钥来加密部分,下面是如何执行的链接http://www.dotnetcurry.com/ShowArticle.aspx?ID=185

在关闭程序之前,我将从connectionString中删除userId和密码,并再次加密

这不是一个好的解决方案。您的数据应该始终加密,或者至少在程序终止时丢失。如果你的用户使用任务管理器杀死了你的程序(或者它只是崩溃了),而你依赖于你的程序在退出时会加密数据的事实,那么你的数据是未加密的。

您可以在获得用户名和密码时对整个连接字符串进行加密。然后,任何时候你想连接,解密它,将它传递给所需的函数并将其删除。永远不要以未加密的方式保存它。

在app.config中创建DBUsername、DBPassword和其他DB条目作为密钥。对于DBPassword,请使用代码中硬编码的主密钥对其进行加密(可能是对称的)。一般来说,这就足够了。还有其他方式,例如使用密钥存储来存储密钥。

如果你不想每次都构造conn字符串,那么创建一个包含整个连接字符串的app-config条目,并用主密钥加密整个字符串(我在这里看不到任何值)。

如果您使用的是windows,并且凭据与windows身份验证相同,则可以从连接字符串中省略用户名和密码,并将其替换为Trusted_connection=true

相关文章:
  • 没有找到相关文章