簡體   English   中英

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

[英]Configuration file - encrypting connection string

我正在嘗試開發一個連接到 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

您正在采取的使用 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\\MyApp

  4. 如果您看到“成功”消息,請將您的 web.config 重命名回 app.config,然后運行您的應用程序。 .NET 應該在該機器上運行時自動解密您的連接字符串。

如果您需要將此應用程序放在其他機器上,您可能需要考慮設置一個可以安裝在其他機器上的通用加密密鑰,並在 web.config 中定義一個利用該密鑰的提供程序。 但是現在,讓我們讓基本流程在本地工作,然后在我們知道這部分正在工作后擔心其他組件。

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM