asp.net對連接字串加密解密

來源:互聯網
上載者:User

在部署項目的時候,我們總是需要加密設定檔中的ConnectionStrings或者appSettings配置節,從而防止使用者資料庫被泄漏。.NET Framework使用提供者模型來加密配置節,架構套件含兩個ProtectedConfigurationProvider:一個是RsaProtectedConfigurationProvider另一個DpapiProtectedConfigurationProvider.  前者是預設的提供者,我們儘可能去使用該種,因為它支援匯入\匯出加密的密鑰,換句話說,可以從一個web伺服器移動配置節到另一個web伺服器,例如可以在你開發的機子上加密配置節,然後將應用部署到產品伺服器。
  如果使用後者加密配置節,那麼就不能在另一個web伺服器解密配置節,如果希望在不同的伺服器之間移動設定檔,那麼應現在員伺服器上解密,再在目標伺服器上重新加密設定檔。
1.使用aspnet_regiis.exe工具加密配置節
對於加密web設定檔中一個配置節來說,這是最方便的手段,該工具位於

1 C:\Windows\Microsoft.NET\Framework\v2.0.50727

目錄下
我們可以手工在cmd dos視窗中敲入路徑使用該工具或者直接在開始菜單中找到Microsoft Visual Studio 2005-》Visual Studio Tools-》Visual Studio 2005 命令提示,開啟該dos視窗,這裡不需要輸入aspnet_regiis.exe工具的路徑
假如我們有個網站在D:\Projects\mywebsite中
我們需要加密該網站的webconfig的appSettings配置節的方法如下

1 aspnet_regiis -pef appSettings "D:\Projects\mywebsite"

以上我們使用的是絕對路徑,當然也可以使用相對路徑

1 aspnet_regiis -pef appSettings "D:\Projects\mywebsite"

-app表示指定應用程式的虛擬路徑

再次開啟該web.config,發現appSetting配置節已經加密了。

當然我們需要加密connectionStrings配置節只要加上面代碼的 appSetting替換下就ok了
我們注意下 -pef(Protect Encrypt Filepath) 這個選項,它是用來加密指定路徑下的web.config檔案的指定配置節
當然還有解密啦....
我們可以使用-pdf選項解密配置節,還拿上面的例子

1 aspnet_regiis -pdf appSettings "D:\Projects\mywebsite"

虛擬路徑

1 aspnet_regiis -pd appSettings -app /mywebsite
 

  假設我們使用RsaProtectedConfigurationProvider加密設定檔,現在需要從一個伺服器複製一個加密設定檔到另一個伺服器,則必須複製加密設定檔的密鑰到新的伺服器,否則應用程式就不能在新伺服器讀取加密後的設定檔
預設情況下,存放密鑰的容器在下面的檔案夾下:

1 \Document and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys

當然,你很有可能找不到該檔案夾(o(∩_∩)o ),現在比如360的搬移打檔案等工具,鬼知道,那些檔案夾會不會移動到別的地方去了....慢慢找下

我的是在

1 C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys

在MachineKeys目錄下會有一些數字和字母組成的系統檔案,這就是我們想找的哈

我們還必須配置一個新的密鑰容器,匯入密鑰容器到新伺服器,需要依次完成下面幾個步驟

1-建立一個新的密鑰容器

1 aspnet_regiis -pc "SharedKeys" -exp

SharedKeys是新的密鑰容器,-exp說明該容器的密鑰可以匯出

2-配置應用程式使用新的密鑰容器
web.config:

1 <configuration>2 <configProtectData defaultProvider="MyProtectedConfigurationProvider">3 <providers>4 <add name="MyProtectedConfigurationProvider" type="System.Configuration.RsaProtectedConfigurationProvider" cspProviderName="" useMachineContainer="true" useOAEP="false" keyContainerName="SharedKeys"/>5 </providers>6 </configProtectedData>7 </configuration>

3-匯出SharedKeys容器中的密鑰到一個keys.XML檔案中

1 aspnet_regiis -px "SharedKeys" keys.xml -pri

4-把剛建立的keys.xml檔案複製到目標伺服器上,並匯入密鑰

1 aspnet_regiis -pi "SharedKeys" keys.xml

5-賦予asp.net應用程式存取金鑰容器的許可權

1 aspnet_regiis -pa "SharedKeys" "ASPNET"
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.