摘要:在計算機系統中,信息是指存儲于計算機及其外部設備上的程序和數據,由于計算機系統中的信息涉及機密問題,因此極易受到敵對勢力以及一些非法用戶、別有用心者的威脅和攻擊。加之幾乎所有的計算機系統都存在著不同程度的安全隱患,延伸到個人信息的安全,保密問題越來越受到人們的重視。從系統與應用程序設計兩個層面探討網站設計中的安全問題。一方面,在系統層上通過下載最新補丁程序和采用NTFS格式等措施來提高網站安全性;另一方面,在應用程序設計中通過身份認證與加密來解決網站安全問題。本文闡述了在網站開發過程中如何提高安全性,以及如何進行數據庫加密和解密,并舉了相應的實例。
關鍵詞:安全;網站;數據庫加密
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)32-1099-04
Research and Realization of the Safety in Website Design
HU Gang1, XIA Rong2
(1.Sichuan Information Technology College,Guangyuan 628017,China; 2.Science and Technology College of NCHU,Nanchang 330034,China)
Abstract: In the computer system, the information is to point the procedure on the equipments with data saving in calculator and its exterior. Because the computer information in the system involves secret problems, it is easily attached by ulterior motives by hostile influence and some illegal customers. Additionally almost all of the calculator systems contain latent crisis of the different degree, extending the safety of the personal information, the problem of keeping secret is more and more valued by people. This paper discusses the safety problems existing in website design from the system and applied program design.The safety of the net can be improved by loading the newest pitch program and adopting NTES format on the system layers.And the safety problems can be resolved by identifying the ID and by encrypting in applied program design. This paper introduces how to improve safety in the development of website, and points out how to encrypt and decrypt the database,and at the same time gives some examples.
Key words: Safety; Website; Database Encryption
1 引言
信息與通信技術迅速在多個領域取得了突破性進展,如實現了光纖密集波分復用的超大容量光通信系統,還有即將投入使用的具有多種業務、多種功能的第三代移動通信系統,再就是牽動全世界的、即將使100多年來的電話網發生變革的、在一個網上實現話音、數據和廣播電視三網融合的新一代互聯網。信息與通信如此神奇的發展,使當今社會生產力從工業化社會大大向信息化社會推進了一步,知識(科技、網絡)經濟已不可逆轉地出現于市場商品經濟的大潮中。可是,信息化社會賴以建立的物質基礎——信息與通信網,卻在萬千世界中處于新生的、比較脆弱的位次,它的成長、它的安全性與可靠性,承受著來自兩大方面的損害、攻擊與破壞。一是來自信息與通信網設備系統本身的軟件與硬件。由于當前工藝(技術)水平所限,它們不可避免地會存在弱點、缺陷、變質、老化、過期以及互串、互拆、過壓、過流、擊穿和燒毀等現象。為了設備系統的可靠性,為此建有龐大的支撐系統和完善的監視、監測、轉換等功能的維護管理系統,還有冷、熱備用以及替代體制等,以實現對信息與通信網自動或人為地更換、更新元部件和線纜;更換、更新軟件版本;補充和擴展網絡。其目的是使信息與通信網設備系統有滿意的可靠性。
在網站設計中,網站自身的安全性非常重要,對個人信息的真實性和機密性的研究,具體的研究內容包含了以下的幾個方面:
1) 軟件安全
軟件安全主要是指保證所有計算機程序和文件資料免遭破壞、非法拷貝、非法使用而采用的技術和方法。它的主要內容有:
① 軟件的自身安全:防止軟件丟失、被破壞、被篡改、被偽造,核心是保護軟件自身的安全;
② 軟件的存儲安全:可靠存儲(保密/壓縮/備份);
③ 軟件的通信安全:系統擁有的和產生的數據信息完整、有效,不被破壞或泄露;
④ 軟件的使用安全:合法使用,防竊取和非法復制;
⑤ 軟件的運行安全:確保軟件的正常運行,功能正常。
2) 數據安全
個人信息的數據安全是指通過對數據采集、錄入、存儲、加工、揭穿地等數據流動的各個環節進行精心的組織和嚴格控制,防止數據被故意的或偶然的非法授權泄露、更改、破壞或使數據被非法系統辯識、控制。它包括以下內容:
① 數據庫的安全;
② 數據加密技術;
③ 壓縮技術;
④ 備份技術。
3) 網絡安全
隨著信息高速公路的建設和國際互聯網的形成,個人信息通過網絡傳播也是很頻繁的途徑,網絡安全是指為了保證網絡及其安全而采用的技術和方法。主要包括:
① 網絡安全策略和安全機制;
② 網絡數據加密技術;
③ 密鑰管理技術;
④ 防火墻技術。
2 操作頁面控制算法的實現
某些非法用戶跳過登錄頁面直接進入管理頁面繼而對信息進行非法操作。而使用的自定義的“cookies.asp”來阻止非法用戶直接跳過而必須經過登錄頁面登錄正確以后才能進行下一步的操作。其代碼如下:
<%
if request.cookies(\"ershou\")(\"administrator\")=\"\" or request.cookies(\"ershou\")(\"ijob\")<>\"1\" or session(\"admin_ijob\")=\"\" or request.cookies(\"ershou\")(\"domain\")=\"\" then
response.redirect \"login.asp\"
end if
if Request.ServerVariables(\"SERVER_NAME\")<>request.cookies(\"ershou\")(\"domain\") then
response.redirect \"login.asp\"
end if
%>
當用戶未通過登錄而直接進入其他的頁面時,系統將自動還原到登錄界面login.asp。
3 網站防注入及IP檢測算法的實現
許多網站在程序編寫時,沒有對輸入數據的合法性進行判斷,使應用程序存在安全隱患。用戶可以提交一段數據庫查詢代碼,根據程序返回的結果進行分析,從而獲取自己想要知道的信息,這就是所謂的SQL Injection。非法攻擊者使用SQL注入的思路一般是:
1) SQL注入漏洞的判斷,即尋找注入點;
2) 判定后臺數據庫類型;
3) 確定XP_CMDSHELL的可執行情況。如當前的用戶具有數據庫設置的SA權限且master.dbo.xp_shell擴展存儲過程能夠正確執行,則計算機就可以被完全控制也就完成了整個注入過程。
SQL防注入系統利用注入漏洞定義一個新的函數如下:
Function SafeRequest(ParaName,ParaType)
'--- 傳入參數 ---
'ParaName:參數名稱-字符型
'ParaType:參數類型-數字型(1表示以上參數是數字,0表示以上參數為字符)
Dim ParaValue
ParaValue=Request(ParaName)
If ParaType=1 then
If ParaValue=\"\" or not isNumeric(ParaValue) then
Response.write \"參數\" ParaName \"必須為數字型!\"
Response.end
End if
Else
ParaValue=replace(ParaValue,\"'\",\"''\")
End if
SafeRequest=ParaValue
End function
所以SQL防注入系統在目前很多系統中都有被使用。在IP檢測的同時系統會自動產生數據庫記錄操作IP的詳細情況,并加入了封鎖/解封控制。錄入數據庫如表1所示。
4 網站數據庫加密
一個網站數據庫的保密性是很值得考慮的問題,在這里提供三種數據庫保密方法:
1) 修改數據庫的后綴名
修改數據庫的后綴名為.asp放在網站的根目錄下,當然cnn.asp中的數據庫連接代碼也得相應的修改:
<%
set rs=server.createobject(\"adodb.recordset\")
set conn=server.createobject(\"adodb.connection\")
DBPath = Server.MapPath(\"news.asp\")
conn.Open \"driver={Microsoft Access Driver (*.mdb)};dbq=\" DBPath
%>
這樣別人很難找到你的數據庫文件,即便找到了除非他知道改后綴名,否則打開也是一堆asp代碼,而不是數據庫信息。
2) 利用Access自帶的掩碼來保密,不過這種方法的保密性較差,稍微懂些Access的人便能破解。
3) 利用加密函數,這種方法的保密性最強,它是利用一段asp代碼建立一個加密函數,將需要加密的地方加密后再傳給數據庫,下面以具體實例來介紹:
利用MD5來實現對數據加密。它的作用是讓大容量信息在用數字簽名軟件簽署私人密匙前被\"壓縮\"成一種保密的格式(就是把一個任意長度的字節串變換成一定長的大整數)。
例如,當用戶登錄的時候,系統把用戶輸入的密碼計算成md5值,然后再去和保存在文件系統中的md5值進行比較,進而確定輸入的密碼是否正確。通過這樣的步驟,系統在并不知道用戶密碼的明碼的情況下就可以確定用戶登錄系統的合法性。這不但可以避免用戶的密碼被具有系統管理員權限的用戶知道,而且還在一定程度上增加了密碼被破解的難度。
對MD5算法簡要的敘述可以為:MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經過了一系列的處理后,算法的輸出由四個32位分組組成,將這四個32位分組級聯后將生成一個128位散列值。
在MD5算法中,首先需要對信息進行填充,使其字節長度對512求余的結果等于448。因此,信息的字節長度(Bits Length)將被擴展至N*512+448,即N*64+56個字節(Bytes),N為一個正整數。填充的方法如下,在信息的后面填充一個1和無數個0,直到滿足上面的條件時才停止用0對信息的填充。然后,在在這個結果后面附加一個以64位二進制表示的填充前信息長度。經過這兩步的處理,現在的信息字節長度=N*512+448+64=(N+1)*512,即長度恰好是512的整數倍。這樣做的原因是為滿足后面處理中對信息長度的要求。
MD5中有四個32位被稱作鏈接變量(Chaining Variable)的整數參數,他們分別為:A=0x01234567,B=0x89abcdef,C=0xfedcba98,D=0x76543210。
當設置好這四個鏈接變量后,就開始進入算法的四輪循環運算。循環的次數是信息中512位信息分組的數目。將上面四個鏈接變量復制到另外四個變量中:A到a,B到b,C到c,D到d。
主循環有四輪,每輪循環都很相似。第一輪進行16次操作。每次操作對a、b、c和d中的其中三個作一次非線性函數運算,然后將所得結果加上第四個變量,文本的一個子分組和一個常數。再將所得結果向右環移一個不定的數,并加上a、b、c或d中之一。最后用該結果取代a、b、c或d中之一。
以一下是每次操作中用到的四個非線性函數(每輪一個)。
F(X,Y,Z) =(XY)|((~X)Z)
G(X,Y,Z) =(XZ)|(Y(~Z))
H(X,Y,Z) =X^Y^Z
I(X,Y,Z)=Y^(X|(~Z)) (是與,|是或,~是非,^是異或)這四個函數的說明:如果X、Y和Z的對應位是獨立和均勻的,那么結果的每一位也應是獨立和均勻的。
5 數據備份與恢復技術
任何一個安全系統都應該包括數據庫的備份及恢復。
5.1 數據備份
用代碼來實現數據庫的備份,操作界面如圖1所示。
數據庫備份具體也由代碼來實現:
<%
Sub backupdata()
Dbpath=request.form(\"Dbpath\")
Dbpath=server.mappath(\"Dbpath\")
bkfolder=request.form(\"bkfolder\")
bkdbname=request.form(\"bkdbname\")
Set Fso=server.createobject(\"scripting.filesystemobject\")
if fso.fileexists(\"dbpath\") then
If CheckDir(bkfolder) = True Then
fso.copyfile dbpath,bkfolder \"\\\" bkdbname
else
MakeNewsDir bkfolder
fso.copyfile dbpath,bkfolder \"\\\" bkdbname
end if
errmsg=\"<li>備份數據庫失敗\"
call disok()
Else
errmsg=\"成功備份數據!\"
call diserror()
End if
end sub
在備份數據庫時應注意檢查當前需要備份的數據庫文件名是否存在以及根據定名來備份當前數據庫自動生成目錄。
5.2 數據恢復
數據恢復的代碼如下:
<BODY>
<%
if request(\"action\")=\"Restore\" then
backpath=request.form(\"backpath\")
Dbpath=request.form(\"Dbpath\")
if dbpath=\"\" then
errmsg=\"<li>請輸入您要恢復成的數據庫全名。\"
call diserror()
else
Dbpath=server.mappath(\"Dbpath\")
end if
backpath=server.mappath(backpath)
'Response.write Backpath
Set Fso=server.createobject(\"scripting.filesystemobject\")
if fso.fileexists(dbpath) then
fso.copyfile Backpath,Dbpath
errmsg=\"<li>成功恢復數據!\"
call disok()
else
errmsg=\"<li>備份目錄下并無您的備份文件!\"
call diserror()
end if
數據庫恢復界面如圖2所示。
6 控制登錄錯誤機制
對于一些低級非法用戶在登錄頁面(login.asp)進行操作時,系統會對其重復錯誤登錄而處于保護狀態,有效的控制了網站的有效使用率。具體實現方法是在其登錄的時候對其進行錯誤登錄計數,重復登錄三次系統將會自動處于保護狀態而禁止非法用戶繼續操作。具體的實現措施是在登錄控制代碼段定義一個靜態變量:
if session(\"ijob_err\")=\"\" then
session(\"ijob_err\")=0
else
if session(\"ijob_err\")>=3 then '錯誤次數設置
response.write \" <b>系統保護狀態,錯誤次數太多!\"
response.end
在用戶登錄時對用戶登錄錯誤次數計數,每錯誤一次給開始定義的數據+1。
session(\"ijob_err\")=session(\"ijob_err\")+1
response.end
7 小結
網站的安全問題是一個立體的,全方位的系統工程。本文從系統與應用程序設計兩個不同的層網站的安全問題進行了討論,提出了一些提高安全性的具體措施。對一些安全性要求較高的網站,我們可以采用 SSL 協議進行保密傳輸。SSL 協議采用采用 128 位RSA算法,具有很高的安全性,它允許客戶機與服務器進行相互認證,并在發送與接收應用協議第一個字節之前處理算法與加密密鑰。而且,SSL 與應用協議獨立,為服務器提供了一種安全的虛擬透明的加密通信連接。
參考文獻:
[1] 景旭,唐晶磊,韓永國.基于信息對抗的網絡集成防御系統[J].微計算機信息,2006,8-3:99-100,103.
[2] 劉朝暉,謝衛星,李康滿.一個主動防御系統的研究與設計[J].微計算機信息,2006,4-3:17-19.
[3] 宋紅,吳建軍,岳俊梅.計算機安全技術[M].北京:中國鐵道出版社,2003.
[4] 張翠肖.利用ASP技術實現頁面訪問安全控制[J]. 計算機應用 ,2001,21(8):18.
[5] 余勇.常用的信息安全標準研究[J].信息技術與應用,2003(7):15-18.
[6] 陽威特.Web應用程序的安全維護[J]. 微型機與應用,2000,(6):30-31+47.
[7] Deborah Radeliff. Overcoming Insecurity[J]. Computerworld, 2000,29.
[8] 錢能.C++程序設計教程[M].北京:清華大學出版社,1999.
[9] Cheswick,William R.and Steven M. Bellovin. Firewalls and Internet Security: Repelling the Wily Hacker, 1995.
[10] 牛少彰.信息安全概論[M].北京:北京郵電大學出版社,2004.
[11] 鐘義信.信息科學原理[M]. 三版. 北京:北京郵電大學出版社,2002.
[12] 戴宗坤,羅萬伯,等.信息系統安全[M].北京:電子工業出版社,2002.
[13] (美)Scott Barman.信息安全策略[M]. 段海新,劉彤, 譯. 北京:人民郵電出版社,2002.
[14] 楊義先,孫偉.現代密碼學新理論[M] .北京:科學出版社,2002.
[15] 袁津生.計算機網絡安全基礎[M].北京:人民郵電出版社,2002.
[16] 張紅旗.信息網絡安全[M].北京:清華大學出版社,2002.