淺談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