配置文件 - 加密连接字符串

没有人_真的

我正在尝试开发一个连接到 SQL 数据库的 C# Winform 应用程序。

到目前为止,我能够将最敏感的数据从我的 XML 配置文件移动到外部 XML 配置文件,但仅此而已。

我要做的最后一件事是加密该文件,因为很多人都可以访问应用程序所在的目录。

我的主要 [APP] 配置文件如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings configSource="conn_string.config"/>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>

还有我的 [conn_string] 外部配置文件,我试图在其中隐藏连接字符串:

<?xml version="1.0" encoding="utf-8" ?>
<connectionStrings>
<add name="myConnectionStringName"
providerName="System.Data.SqlClient"
connectionString="Data Source=ServerName;Initial 
Catalog=InitialDatabaseName;User=UserName;Password=MyPassword;Application Name=MyAppName" />
</connectionStrings>

现在说到加密,我读到 asp-netregiis.exe 只查找名为“web”的文件,所以我暂时将我的“conn_string”文件重命名为“web”

并尝试了加密(通过开发人员命令行 VS):

aspnet_regiis -pef "connectionStrings" "path_to_my_conn_string_file"

结果是:~我的翻译

The web.config file doesn't contain a configuration tag 

所以我添加了一个这样的:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="myConnectionStringName"
providerName="System.Data.SqlClient"
connectionString="Data Source=ServerName;Initial 
Catalog=InitialDatabaseName;User=UserName;Password=MyPassword;Application Name=MyAppName" />
</connectionStrings>
</configuration>

现在它抱怨:~又是我的翻译

File format configSource must be an element conatining section name
大卫·W。

您正在采取的使用 aspnet_Regiis 的步骤实际上适用于托管在 Internet Information Server (IIS) 中的 Web 应用程序。它正在寻找的文件实际上是“web.config”。您提到正在构建的应用程序是一个 winforms 应用程序,而不是 Web 应用程序。常规的 winforms 应用程序通常通过名为“app.config”的文件进行配置。Visual Studio 可能已经为你创建了一个基础 app.config,具体取决于你使用的版本。

您可以通过暂时将 app.config 重命名为 web.config来“欺骗” aspnet_Regiis 加密您的配置文件,然后使用指向我们“虚假” web.config 的确切路径的标志调用 aspnet_regiis:

为简单起见,假设您的初始 app.config 位于 c:\MyPrograms\MyApp。

  1. 将 app.config 重命名为 web.config。
  2. 在管理命令提示符下,将当前目录设置为 c:\windows\micrsoft.net\framework\v4.0.30319
  3. 调用 aspnet_regiis,使用“-pef”开关指示工具加密 web.config 的特定部分:

    aspnet_regiis -pef "connectionStrings" c:\MyPrograms\myApps

  4. 如果您看到“成功”消息,请将您的 web.config 重命名回 app.config,然后运行您的应用程序。.NET 应该在该机器上运行时自动解密您的连接字符串

如果您需要将此应用程序放在其他机器上,您可能需要考虑设置一个可以安装在其他机器上的通用加密密钥,并在 web.config 中定义一个利用该密钥的提供程序。但是现在,让我们让基本流程在本地工作,然后在我们知道这部分正在工作后担心其他组件。

希望这可以帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在配置文件中加密密码?

在Spring XML配置文件中串联字符串?

用于在Java中保存连接字符串参数的配置文件

连接字符串中的Spring配置文件

在应用程序配置文件中找不到名为“ MyEntities”的连接字符串

应用程序的配置文件中的连接字符串'MyConnection'不包含必需的providerName属性。”

Swift钥匙串和配置文件

在应用程序配置文件中找不到名为连接的字符串

从Azure函数中的配置文件加载连接字符串

如何在类库中添加配置文件,然后添加.NET Core 1.1的连接字符串

如何在WPF应用程序的配置文件中添加连接字符串

使用配置文件指定连接字符串以在单元测试中定义数据源

Kubectl如何连接到配置文件

如何使用ASP.NET配置hangfire以从配置文件获取连接字符串?

纯文本和配置文件中的连接字符串

在配置文件中找不到连接字符串。但它在那里

连接字符串和配置文件

配置文件中的Shell Concat字符串

在应用程序配置文件中找不到名为“”的连接字符串

Python从配置文件中删除字符串

搜索并在配置文件中附加字符串

连接字符串:从配置文件转换为代码

配置文件中的Grep特定字符串

在应用程序配置文件中找不到名为“ xxx”的连接字符串

System.InvalidOperationException:在应用程序配置文件中找不到名为“SALESDBEntities”的连接字符串

使用配置文件中的连接字符串获取 SSIS 包中的连接时出错

使用字符串读取配置文件变量

VB Net - 当字符串位于 Web 配置文件中时,如何创建 SQL 连接字符串?

Ansible 字符串连接到配置文件中