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


在部署項目的時候,我們總是需要加密配置文件中的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"
 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM