1. 程式人生 > >淺談ASP.NET配置檔案加密

淺談ASP.NET配置檔案加密

在剛剛完成的一個ASP.NET專案中,遇到了這麼一個問題,專案部署到生產環境中時,領導要求專案中的配置檔案(如web.config,app.config)中不能出現敏感字元,如:資料庫連線,等等。

第一個想到的方法是,寫一個加密解密演算法,將這些配置檔案中的值以密文的方式存到config檔案中,程式碼中config檔案的值的時候,再進行解密。這個方法直接被否定了,因為程式碼中,獲取config值的地方很分散,很難一一修改。

找了一下資料,發現有一個完美的解決方案,簡單,快速,又不會修改任何的程式碼。下面我們來看看是什麼解決方案:

ASP. NET 2.0提供了一個保護配置模型來加密和解密web.config中sections資訊。RSAProtectedConfigurationProvider:預設通過RSA公鑰來加密和解密。

首先,我們通過在windows命令列中執行aspnet_regiis.exe來加密與解密。

VS中建立一個新的websit專案,開啟web.config,加入資料庫連線串,如:

然後我們按下面的步驟來加密和解密資料連線串

1. 開始選單>>所有程式>>Microsoft visual studio 2008 >> Visual Studio Tools >> Visual Studio 2008 開發人員命令提示(如果是windows7,點右鍵與管理員身份執行)

2. 在命令視窗中,輸入命令 aspnet_regiis.exe -pef "appSettings" "C:\VisualStudio2008\Authorization"

 –pef表明程式是以檔案系統的形式建立的。第二個“appSettings”是你要加密的configuration 節點名字。第三個引數指名 web.config的物理路徑。

3. 成功執行命令後會顯示:加密成功。

現在,再開啟程式中的 web.config,會變成像下面這樣子了。

 

我們在程式中並不要寫任何程式碼來解密連線字串,因為.NET會自動的為我們解密。如果我們要用連線字串,可以像平常那樣呼叫.

string strconnection = ConfigurationManager.AppSettings["dbconnection"].ToString();

如果我們想解密,只需要在VS的命令視窗中,輸入aspnet_regiis.exe -pdf "appSettings" "C:\VisualStudio2008\Authorization"

成功執行後,會顯示解密成功。

再開啟web.config,我們可以看到解密後的字串。

小夥伴們,是不是很方便啊。

https://www.cnblogs.com/xiaomowang/p/8430463.html