資料庫連接字串的處理方法!加密解密連接字串

來源:互聯網
上載者:User
加密|解密|資料|資料庫|資料庫連接|字串

資料庫連接字串的處理應該是一個項目裡最基礎的東東了。(除非你的項目不涉及到資料庫。)

千萬不要小看他,處理不好也時會給你帶來不少的麻煩的。

連接字串的內容在這裡就不討論了,這裡主要說一下他的存放位置和讀取方法。

我們要達到的目的:無論連接字串如何變化,都不需要修改項目!

1.把連接字串寫在程式裡面。

一般的初級教程裡會告訴你這麼寫

VB.net

Dim cn As New SqlClient.SqlConnection("user id=sa;password=sa;server=.;initial catalog=資料庫名稱")
C#

SqlClient.SqlConnection cn = new  SqlClient.SqlConnection("user id=sa;password=sa;server=.;initial catalog=資料庫名稱")
這麼寫當然是沒有錯誤,但是當你寫了n個頁面後,有一半的頁面有這樣的代碼,這時候如果需要改變連接字串(比如換使用者名稱和密碼)的話,那可就有得你改的了。想當初我就犯過這樣的錯誤,555555

2.放在web.config裡面

這是比較流行的方法了。修改web.config檔案,加入以下代碼

<APPSETTINGS>
<ADD value="user id=sa;password=sa;server=.;initial catalog=資料庫名稱" key="connString" />
</APPSETTINGS>
然後在需要的地方調用就可以了。

VB.net

Dim cnString As String = System.Configuration.ConfigurationSettings.AppSettings.Item("connString")
C#

string cnString = System.Configuration.ConfigurationSettings.AppSettings["connString"]
這樣呢就不怕連接字串再發生變化了。如果有變化的話,修改web.config就行了。

缺點就是web.congfig 是文本形式的,雖然不能下載,但還是缺乏安全感。

3.放在註冊表裡面

 事先把連接字串放在註冊表裡面,用的時候到註冊表裡面取值。

優點:安全性高。要想看到註冊表裡的資訊不是很容易的事情吧。

缺點:讀取註冊表需要一定的許可權,但是一般的空間是不會開放這個許可權的,因為開放了就意味著可以操作註冊表,這對伺服器就太不安全了。

4.放在DLL檔案裡面

寫一個單獨的類,再寫一個函數,調用這個函數返回連接字串。然後把它編譯成DLL檔案備用

using System;
namespace JYK
{
    /**//// <summary>
    /// 取得連接字串。
    /// </summary>
    public class Connection
    {
        public static string ConnectionString()
        {
            return "user id=sa;password=sa;server=.;initial catalog=資料庫名稱";
        }
    }
}
直接開啟 DLL檔案 看到的是亂碼,要比寫在web.config有安全感。當然了通過反編譯軟體還是可以看到裡面的代碼。

還有就是修改起來不太方便,需要重新編譯一下這個類。

5.綜合

以上個四種方法各有優越缺點,用哪一個都不是最好的,另外還有一個問題沒有提及 —— 加密連接字串。

那麼在一個項目裡,怎麼做才是最好的方法呢? —— 分層。

項目 <——類(DLL檔案) <——存放連接字串的位置
A.對於項目來說呢只需要知道:當我要用連接字串的時候我到DLL裡面(調用函數)讀取就行了,至於連接字串具體的存放位置、是否加密等都不必關心。

B.類(DLL檔案),這個就很重要和靈活了。對於一般的項目可以這麼寫

using System;
namespace JYK
{
    /**//// <summary>
    /// 取得連接字串。
    /// </summary>
    public  class Connection
    {
        public static string ConnectionString()
        {
            return System.Configuration.ConfigurationSettings.AppSettings["ConnString"];
        }
    }
}
注意:上一個DLL是把連接字串直接寫在了類裡面,而這回是到web.config裡面讀取。

也許你會問:既然是到web.config裡面讀取連接字串,那為什麼還要加上一個DLL呢,是不是多此一舉呀?

這麼做是為了達到這個目的:無論連接字串如何變化,都不需要修改項目!

如果是直接讀取web.config,那麼如果web.config裡面放的是加密的連接字串,那怎麼處理?是不是要修改項目,或者是資料層。不要認為修改資料層就不是修改項目了。

如果加上了一個DLL的話,那麼只需要重新編譯一下這個DLL就行了。項目可以保持不變。

C.連接字串的存放位置

這個可以根據項目的要求來做,放在哪裡都可以,只需要修改一下DLL檔案就行了。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.