劉洪民
(安徽省六安市氣象局 安徽 237011)
中小型網(wǎng)站大多采用 Access作為網(wǎng)絡(luò)數(shù)據(jù)庫(kù),網(wǎng)站基于B/S架構(gòu),利用ODBC連接Access數(shù)據(jù)庫(kù),采用Asp作為網(wǎng)絡(luò)編程語言。Asp服務(wù)器端程序+Access后臺(tái)數(shù)據(jù)庫(kù)模式適合于數(shù)據(jù)記錄量較小、訪問量較低的中小型網(wǎng)站系統(tǒng),屬于非服務(wù)器級(jí),由于Access數(shù)據(jù)庫(kù)的ODBC驅(qū)動(dòng)程序支持SQL指令集,且執(zhí)行效率高,因此該模式是一個(gè)精練實(shí)用的常用模式。
網(wǎng)站主要由網(wǎng)站首頁和后臺(tái)管理兩部分組成,而網(wǎng)站設(shè)計(jì)的重點(diǎn)工作是后臺(tái)管理程序的編寫,通過后臺(tái)管理平臺(tái),對(duì)整個(gè)網(wǎng)站信息、內(nèi)容進(jìn)行添加、刪除、修改等操作,這就涉及到網(wǎng)站的安全性問題,因?yàn)楣芾韱T帳號(hào)密碼等信息都存儲(chǔ)在數(shù)據(jù)庫(kù)文件中,所以數(shù)據(jù)庫(kù)安全性是網(wǎng)站技術(shù)人員重點(diǎn)考慮和關(guān)注的問題。
1.1 表對(duì)象
Access文件包括表、查詢、窗體、報(bào)表、頁、宏、模塊共七個(gè)對(duì)象。Web數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)一般只用到表和查詢兩個(gè)對(duì)象。表由結(jié)構(gòu)與數(shù)據(jù)記錄兩個(gè)部分組成。結(jié)構(gòu)內(nèi)容包括字段名稱、數(shù)據(jù)類型、長(zhǎng)度、精確度等屬性組成;表的每一行即為一個(gè)數(shù)據(jù)記錄,所有數(shù)據(jù)記錄的集合構(gòu)成一個(gè)表。在表存放數(shù)據(jù)記錄之前,必須定出結(jié)構(gòu),而表的結(jié)構(gòu)定義工作即決定表將擁有哪些字段以及這些字段的規(guī)格,所謂字段的規(guī)格是指字段名稱、數(shù)據(jù)類型、大小、精確度、小數(shù)位數(shù)等屬性。
1.2 查詢對(duì)象
Access提供了查詢?cè)O(shè)計(jì)視圖,Select-SQL命令及各種查詢向?qū)磔o助完成所需的查詢。查詢的基本功能是:選取查詢,查詢不會(huì)修改表內(nèi)的數(shù)據(jù),查詢雖然是一個(gè)存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)對(duì)象,但所存放的并不是查詢所得的信息,而是如何去取得所需信息的方法與定義(即相關(guān)的SQL命令語句),執(zhí)行查詢時(shí)所得信息不會(huì)存儲(chǔ)在數(shù)據(jù)庫(kù)中,是用SQL命令對(duì)表進(jìn)行“篩選”的結(jié)果。
瀏覽器是操作系統(tǒng)的核心,用戶通過瀏覽器向網(wǎng)站服務(wù)器發(fā)出請(qǐng)求,服務(wù)器端Asp網(wǎng)絡(luò)程序響應(yīng)執(zhí)行,并將處理結(jié)果返回瀏覽器,供用戶查看。建立Asp與Web數(shù)據(jù)庫(kù)的運(yùn)行平臺(tái),目前普遍使用的PC機(jī)均能滿足硬件要求,當(dāng)然,硬件配置越高檔越好;軟件要求,最好是Windows 2003 Servers以上服務(wù)器操作系統(tǒng)。
圖1 瀏覽器打開Asp網(wǎng)頁到存取Access數(shù)據(jù)庫(kù)的過程
3.1 密碼文件
后臺(tái)管理員的帳號(hào)、密碼一般也存放在數(shù)據(jù)庫(kù)中,如果網(wǎng)頁瀏覽者知道存儲(chǔ)密碼文件的名稱及目錄,就可以在瀏覽器地址欄輸入相應(yīng)文件路徑下載下來,有些人的做法是對(duì)密碼文件取個(gè)難猜的名字,讓用戶無法猜出,而比較正規(guī)的做法是對(duì)密碼文件進(jìn)行“編碼”及“加密”。假設(shè)存儲(chǔ)密碼的文件為users.mdb,它是一個(gè)沒有編碼及加密的數(shù)據(jù)庫(kù)。
3.2 對(duì)users.mdb編碼和加密
啟動(dòng)Access,暫不要啟動(dòng)任何數(shù)據(jù)庫(kù)文件。選取菜單“工具→安全→加密/解密數(shù)據(jù)庫(kù)”,待出現(xiàn)“數(shù)據(jù)庫(kù)加密/解密”窗口時(shí),選取users.mdb數(shù)據(jù)庫(kù),點(diǎn)擊“確定”按鈕,接著又會(huì)出現(xiàn)“數(shù)據(jù)庫(kù)加密后另存為”窗口,在此窗口的“文件名”字段中輸入users2.mdb,點(diǎn)擊“保存”按鈕,接著users.mdb就會(huì)被編碼,并存儲(chǔ)為users2.mdb。以上動(dòng)作只是對(duì)數(shù)據(jù)庫(kù)文件進(jìn)行編碼,并不是對(duì)數(shù)據(jù)庫(kù)設(shè)置密碼。
3.3 數(shù)據(jù)庫(kù)文件加密
首先以“獨(dú)占模式”啟動(dòng)users2.mdb,選取菜單“工具→安全→設(shè)置數(shù)據(jù)庫(kù)密碼”,接著輸入密碼即可。以上步驟已成功為users2.mdb設(shè)置了密碼,如使用Access啟動(dòng)這個(gè)數(shù)據(jù)庫(kù),則要求輸入密碼,輸入正確密碼后,才能啟動(dòng)數(shù)據(jù)庫(kù)。
3.4 加密數(shù)據(jù)庫(kù)的連接程序(Asp程序)
在網(wǎng)絡(luò)程序中,如要啟動(dòng)含有密碼的.mdb數(shù)據(jù)庫(kù),只需要在“數(shù)據(jù)庫(kù)連接”程序上稍做添加,具體程序如下:
3.5 Access數(shù)據(jù)庫(kù)文件的加密原理
Access數(shù)據(jù)庫(kù)的加密原理是對(duì)密碼字符串進(jìn)行異或操作,而在二進(jìn)制串中的異或運(yùn)算是可逆的(即用設(shè)定的二進(jìn)制串與密碼對(duì)應(yīng)二進(jìn)制串異或的結(jié)果與設(shè)定二進(jìn)制串異或可得密碼對(duì)應(yīng)的二進(jìn)制串),所以加密數(shù)據(jù)庫(kù)可被下載下來輕易破解,從而打開.mbd文件,查看密碼明文。
3.6 常用的加密算法
目前常用的加密算法是 MD5加密算法,MD5的全稱是Message Digest Algorithm 5。Message-Digest泛指字節(jié)串(Message)的Hash變換,就是把一個(gè)任意長(zhǎng)度的字節(jié)串變換成一定長(zhǎng)的大整數(shù)。MD5將任意長(zhǎng)度的"字節(jié)串"變換成一個(gè)128bit的大整數(shù),它是一種不可逆的加密算法,即密碼不是以明文出現(xiàn),而是以經(jīng) MD5算法加密后的編碼出現(xiàn),連管理員和操作系統(tǒng)都無法讀取密碼明文,此加密算法安全性高,很難破解,是目前比較流行的一種加密算法。
如果瀏覽用戶不把.mdb文件下載下來,就無法進(jìn)行暴力破解,筆者在實(shí)際應(yīng)用中常用以下方法防止.mdb數(shù)據(jù)庫(kù)被下載:
4.1 為.mdb數(shù)據(jù)庫(kù)文件取一個(gè)位數(shù)多且難猜的文件名,讓上網(wǎng)用戶難以猜出;
4.2 在數(shù)據(jù)庫(kù)文件名中添加“#”,因?yàn)椤?”屬于特殊字符,瀏覽器只解釋到“#”之前字符串,到“#”字符就結(jié)束解釋;空格號(hào)也可以起到“#”作用,但必須是文件名中間出現(xiàn)空格。
4.3 將.mdb改成.asp后綴,如將users.mdb改成users.asp,瀏覽器也無法直接下載。
通過以上設(shè)置,數(shù)據(jù)庫(kù)的安全性已經(jīng)基本滿足工作需要,特別適合于中小型網(wǎng)站,其操作靈活、移植備份方便、運(yùn)行環(huán)境簡(jiǎn)單,技術(shù)人員容易掌握,且對(duì)硬件、軟件的要求不是很高,可以說是短小精悍,但數(shù)據(jù)記錄量不能太大,科學(xué)研究表明,當(dāng)數(shù)據(jù)記錄量超過十萬條時(shí),其查詢效率會(huì)明顯下降,因此只適合于要求不是很高的中小型網(wǎng)站系統(tǒng)。
[1]王國(guó)榮.Web數(shù)據(jù)庫(kù)[M].北京:人民郵電出版社,1999.3.
[2]章立民.Access 2003高手攻略[M].北京:中國(guó)鐵道出版社,2004.7.