程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 如何編碼web.config中的信息

如何編碼web.config中的信息

編輯:關於C#
 

我們都知道web.config可以保存連接字符串,我們在程序中也都是這麼做的,web.config是XML,所以它有清晰的結構,是我們很容易可以讀懂它,但是這也出現一個問題,我們數據庫完全暴露給浏覽該文件的人,這是我們所不希望的。我們可以使用一個簡單有效的加密算法來加密這段連接字符,使直接浏覽該文件的人不能清楚地看到這些信息。
我們一般以下面的形式保存連接字符串:
<appSettings>
<add key="ConnectionString" value="server=localhost;database=test;pwd=sa;uid=sa;" />
</appSettings>
為了我們自己可以看得明白這些加密的字符我們需要一個額外的程序專門生成這些加密數據(這個額外的程序你可以寫得很復雜但是為了說明問題,我們使用簡單的base64編碼數據,這其實不是加密數據,但是原理是一樣的)。我們建立一個WinForm工程,專門用來生成明文到密文的(base64)轉換,如果使用其它的加密算法可以替換這個加密過程。轉換按鈕裡面的代碼如下:
private void button1_Click(object sender, System.EventArgs e) {
byte[] data = System.Text.ASCIIEncoding.ASCII.GetBytes(this.textBox1.Text);
string str = Convert.ToBase64String(data);
this.textBox2.Text = str;
}
其中textBox2裡面就是變碼以後的字符。我們可以將我們web.config裡面的連接字符("server=localhost;database=test;pwd=sa;uid=sa;")取出來放在這個程序裡面執行生成一個新的字符串(c2VydmVyPWxvY2FsaG9zdDtkYXRhYmFzZT10ZXN0O3B3ZD1zYTt1aWQ9c2E7)。
之後我們用這個字符替換未編碼的字符串。如下所示:
<appSettings>
<add key="ConnectionString" value="c2VydmVyPWxvY2FsaG9zdDtkYXRhYmFzZT10ZXN0O3B3ZD1zYTt1aWQ9c2E7" />
</appSettings>
哈哈!看不見了吧!但是我們的程序也不認識了:-( 沒關系我們自己知道加密算法所以我們的程序可以看懂,最後就是在程序中如何使用了,我們的程序需要理解這個字符串的意義,我們在數據訪問層裡面添加如下的工具方法
private string GetConnectionString(){
string strconn = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
byte[] data = Convert.FromBase64String(strconn);
string strRealConn = System.Text.ASCIIEncoding.ASCII.GetString(data);
return strRealConn;
}
這樣就可以得到真實的連接字符串了。
上文一個簡單的加密(偽加密,其實本文實現的是一個編碼而非加密)的方法,也許可以騙過一些人的眼睛,但是對於了解內幕的人還是起步到什麼保護的作用,所以你可以擴展這個算法,使用對稱或者非對稱的加密算法替換該案例裡面的編碼算法,這樣基本上就萬無一失了。

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved