【案例引用】
例如
<
connectionStrings
>
<
add
name
=
"EnterpriseWebConnectionString"
connectionString
=
"Data Source=. ; Initial Catalog=Enterprise;User ID=sa;Password=1391018"
providerName
=
"system.Data.SqlClient"
/>
</
connectionStrings
>
如何給Data Source=. ; Initial Catalog=Enterprise;User ID=sa;Password=1391018" providerName="System.Data.SqlClient 加密?
在程序中如何調用?能否給個例子?有沒有方便加解密的小工具呢?
1. .NET本身已經提供有Encrypt命名空間的一些加密算法,有對稱的,也有非對稱的。當然,你也可以設計自己的一個加密算法。
2. 無論是Web應用,還是Winform應用,連接串都通常是保存在web.config或者app.config裏的,並且提供了相應的一個Singleton模式的類來提供對連接串的訪問。
3. 你需要做的,就是每次連接前,利用這個Singleton類把連接串密文取出,解密後再把明文作為參數傳遞給Connection對象的構造子進行連接。
1.先來看看如何在web.config中寫入數據庫連接字符串.打開web.config文件,一開始web.config文件裏默認就有兩個配置節,分別是"<connectionStrings/>","<appSettings/>",在這兩個配置節下都可以寫入連接字符串,一般來說是在<connectionStrings>中寫,如:
<connectionStrings>
<add name = "connectionString" connectionString="server=localhost;database=hh_li;User ID=sa;password=”/>
</connectionStrings>
或者寫在<appSettings>中:
<appStrings>
<add key=''connectionstring" value=http://www.ithao123.cn/”server=localhost;database=hh_li;User ID=sa;password=”/>
</appStrings>
在以上兩種方式中,name和key的值是連接字符串的"名字",就和一個變量的變量名一樣,connectionString的值是具體的連接字符串內容.
2.asp.net2.0中讀取web.config數據庫連接字符串2種方法
方法一:
string myConn = System.Configuration.ConfigurationManager.ConnectionStrings["sqlConnectionString"].ConnectionString;
方法二:
string connString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["sqlConnectionString"].ToString();
3.web.config中連接字符串的加密解密
加密:
asp.net裏面web.config文件中的連接字符串是以明碼形式保存的,通常存儲內容包括數據庫服務器名稱、數據庫名稱、賬號、甚至包括密碼。
為了解決這個問題,ASP.NET 2.0支持一種將連接字符串等敏感信息加密存儲於是Web.config文件中的方法.進入.net 的SDK命令提示符,使用命令行工具aspnet_regiis.exe.該應用程序位於“%systemroot%\Micrsoft.NET\Framework\versionNumber”文件夾中。aspnet_regiis.exe是一種常見的命令行解釋器,開發人員只需按照簡單的語法要求輸入命令,就可以完成連接字符串的加密或解密的任務。
假設需要加密的Web.config文件位於“D:\website2”文件夾中,則使用的命令行如下。
aspnet_regiis.exe -pef “connectionStrings” “D:\website2”
參數"-pef"表示根據文件絕對路徑執行加密配置節;“connectionStrins”表示所加密的配置節名稱;“D:\website2”表示Web.config文件所在文件夾絕對路徑。 加密結束後,aspnet_regiis.exe將提示開發人員加密成功
解密:連接字符串加密後,其它人很難在不經過解密的情況下,了解具體的連接字符串內容。
解密的命令如下: aspnet_regiis.exe -pdf “connectionStrings” “D:\website2” 需要註意的是,加密過程中使用了一個基於本機的密鑰,這意味著解密過程必須在同一臺計算機上完成。如果是將加密後的Web.config文件移動到其它計算機上,那麽Web.config文件中的連接字符串將不能夠正常解密。註意,加密是-pef,解密是-pdf,不要搞錯了。
上述整理成BAT批處理腳本:
-----------------------------------------------
連接字符串加密
-----------------------------------------------
@echo off
C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" "C:\Program Files\Microsoft\.NET Pet Shop 4.0\Web"
PAUSE
-----------------------------------------------
連接字符串解密
-----------------------------------------------
@echo off
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf "connectionStrings" "C:\Program Files\Microsoft\.NET Pet Shop 4.0\Web"
PAUSE
【詳細介紹】
在WEB網站開發過程中,如果我們將數據庫連接字符串封裝到.DLL文件中,將會給數據庫和程序的遷移帶來麻煩,因為萬一服務器地址或者數據庫發生變更,那麽我們就不得不修改源程序並重新將其編譯。更好的解決方法是將數據庫連接字符串寫入到web.config配置文件中,可問題是將連接字符串寫入到web.config文件中之後,任何人都能打開看到所連接的數據庫名和密碼,又會帶來安全隱患,因此為了保證數據庫的安全性,我們可以通過使用微軟IDE自帶的命令aspnet_regiis.exe將配置文件web.config中指定的標簽進行加密,如果以後想查看加密後的連接字符串,我們還可以使用aspnet_regiis.exe將加密後的字符串進行解密。
1. 加密通用語法
加密一個特定網站的web.config文件的通用形式
aspnet_regiis.exe -pef secion physical_directory -prov provider
或
aspnet_regiis.exe -pe secion -app virtual_directory -prov provider
其中,各個參數的含義如下:
- section表示要加密的配置節
- physical_directory用於指定站點的物理路徑。
- virtual_directory用戶指定虛擬路徑。
- provider指定加密提供程序。
加密一個特定站點的連接字符串就是:
aspnet_regiis.exe -pef "connectionStrings" "你的web項目路徑" -prov "DataProtectionConfigurationProvider"
其中DataProctionConfiguartionProvider是Windows數據保護API(DPAPI)提供程序,它使用Windows內置的密碼學技術來加解密配置節。默認情況下,這個提供程序使用本機的密鑰。
2. 加密方法
運行Visual Studio 2008命令提示
加密後的結果
- <connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
- <EncryptedData>
- <CipherData> <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAy1WyvzomB0WAlqYo+ogiigQAAAACAAAAAAADZgAAqAAAABAAAADbDjp+bAce//lsg/so66+8AAAAAASAAACgAAAAEAAAANlF3b73Kdupv/cAf4a9nPUwAQAAoTvrHdAjNjaJFEfiG7pD6sG8GMNJKGpnd4JLchu7W9XhOuPgG4C/LD9H9WQ9uF3t/0MoMI9tbrWdFJ1Yu5/e3PAV4RCbCvDlPD0VC7hxtDMqfRjQ+1OhTdk2woiSNpx0TzXwZE25o4vlXq/aYri1Wmlo2zyRqSkg0hQFQbObCf7lrgWEUjsv+pEOS5OVXcgNhFipVMy5iQ8sH5fNHmGg8gu5JlZQaOqYFG8ci7MGOebcQzR67krJXRBrs26lZtAj8lzf2bK+QcSqtU7Rt4C33JbLqisPL9xhfoUl9GvGTu5VS1S1H5VtErTeYXxnL7PTIr3cNjIbDMjI48LJfoOgtymT35KUdK3J0DxB68DqPaeK5QSEC/L0+6bizStRZ7BDnOngV/XfiVJnbSNYXX5IShQAAACuGn8QGUuQ4TOzkKcc891SV/CVDQ==</CipherValue>
- </CipherData>
- </EncryptedData>
- lt;/connectionStrings>
3. 解密
解密該連接字符串也很簡單
aspnet_regiis.exe -pdf "connectionStrings" '你的web項目路徑"
解密後的結果:
- <connectionStrings>
- <add name="Sql" connectionString="Data Source=.;Initial Catalog=MySchool;Integrated Security=True" />
- </connectionStrings>
4. 後臺代碼讀取配置文件web.config中數據庫連接字符串的方法:
[c-sharp] view plain copy
- using System.Configuation;
- …
- protected void Page_Load(object sender, EventArgs e)
- {
- lblmessage.Text = ConfigurationManager.ConnectionStrings["Sql"].ToString();
- }
- …
運行效果圖:
5. 在連接字符串的加密和解密的過程中,需要註意一下幾點。
- 使用加密的連接字符串
使用加密的連接字符串不需要編碼解密,ASP.NET會自動對加密內容進行解密。
- 加密和解密在同一臺計算機上使用
在加密過程中,使用了一個基於本機的密鑰。這就意味著加密和解密必須在同一臺計算機上進行,否則將不能解密。同時,在一臺計算機上加密的配置,在另一臺計算機上將不能正常使用。
- 中文路徑問題
該命令對中文支持不是很好。如果站點的路徑中有中文字符,也許不能正常加解密。
1、C#中Web.Config加密與解密的方法_C#教程 http://www.jb51.net/article/35996.htm
2、.NET加密配置文件connectionStrings節點 - http://www.cnblogs.com/zfanlong1314/p/3974950.html
3、web.config本地加密解密方法_http://jingyan.baidu.com
文章來源:
Tags:
數據庫連接 asp.net 字符串 加密 程序