倪 慶,毛宇光
(1.南京航空航天大學計算機科學與技術(shù)學院,江蘇 南京 210016;2.南京大學計算機軟件新技術(shù)國家重點實驗室,江蘇 南京 210093)
隨著科技的進步和社會的發(fā)展,信息技術(shù)的革命使人們的工作模式越來越趨向于智能化和自動化。目前,以計算機和網(wǎng)絡為基礎的各種管理信息系統(tǒng)己成為當今社會運行的基礎,數(shù)據(jù)庫作為系統(tǒng)的核心,其安全問題也越來越引起人們的重視。在此背景下,計量行業(yè)結(jié)合自己的業(yè)務需求和特點進行計量信息管理系統(tǒng)的開發(fā)。本文以數(shù)據(jù)庫安全理論為指導,采用用戶身份認證、防火墻技術(shù)、基于角色的訪問控制、數(shù)據(jù)加密,審計追蹤與入侵檢測、防數(shù)據(jù)庫下載和防SQL注入攻擊等技術(shù)來確保系統(tǒng)安全,防止不合法的使用造成數(shù)據(jù)泄漏、更改或破壞,給企業(yè)帶來損失。
本系統(tǒng)采用Browser/Server模式,使用三層應用體系結(jié)構(gòu)(如圖1)。其中,表示層位于客戶端,用于顯示和接收用戶提交的數(shù)據(jù),為用戶提供交互式的界面,其主要工具是Internet Explorer瀏覽器;業(yè)務邏輯層是系統(tǒng)的核心部分,主要根據(jù)計量業(yè)務處理邏輯,在表示層和數(shù)據(jù)訪問層之間進行數(shù)據(jù)的傳遞和處理;數(shù)據(jù)訪問層位于底層,主要實現(xiàn)對數(shù)據(jù)的讀取、保存和更新等操作。
本系統(tǒng)在Windows XP操作系統(tǒng)環(huán)境下,主要以Microsoft Visual Studio 2008為開發(fā)平臺,SQL Server 2005為后臺數(shù)據(jù)庫,采用ASP.NET中間件技術(shù),結(jié)合C#以及天開流程平臺進行系統(tǒng)開發(fā)。
圖2 系統(tǒng)功能模塊圖
如圖2所示,本系統(tǒng)可以分為檢定校準業(yè)務模塊、檢驗業(yè)務模塊、查詢及統(tǒng)計分析模塊、基礎數(shù)據(jù)維護模塊和系統(tǒng)管理模塊5大部分,各模塊功能如下:
(1)檢驗校準業(yè)務模塊。主要包含客戶管理和合同管理、客戶服務管理、檢測服務管理以及物流管理等業(yè)務,可分為檢定協(xié)議客戶管理、現(xiàn)場檢測業(yè)務計劃、委托單業(yè)務、流轉(zhuǎn)單打印、證書相關(guān)、完工確認、收費確認、延期、加急、客戶取件和退件等子模塊。
(2)檢驗業(yè)務。主要包含客戶管理和合同管理、檢測服務管理以及物流管理等業(yè)務,可分為檢驗協(xié)議客戶管理、委托單業(yè)務、檢驗派工、資料審核、檢驗配時、報告相關(guān)、完工確認、收費確認和客戶取件等子模塊。
(3)查詢及統(tǒng)計分析。主要對器具、證書的數(shù)量和業(yè)務完成情況以及回款情況進行數(shù)據(jù)統(tǒng)計分析,由器具明細、證書明細、超期器具查詢、核算報表、按期檢出率、強檢報表、部門核算收入、未付款統(tǒng)計、到賬匯總等子模塊構(gòu)成。
(4)基礎數(shù)據(jù)維護。主要用于合同管理、業(yè)務派工、證書管理、器具管理、績效考核等管理工作,可分為器具維護、標準報價庫維護、器具報價維護、模板維護、標準器維護、標準設備維護、技術(shù)規(guī)程維護、倉庫維護、考核項目管理等子模塊。
(5)系統(tǒng)管理。主要是對資源進行分配和管理,可分為通知公告管理、有效工作日管理、單位用戶管理、角色管理、系統(tǒng)日志管理等子模塊。
如圖3所示,本系統(tǒng)使用Web數(shù)據(jù)庫,結(jié)合ASP中間件技術(shù),通過Web方式訪問數(shù)據(jù)庫,在數(shù)據(jù)庫端實現(xiàn)對數(shù)據(jù)庫的操縱,服務器將結(jié)果以Web頁的形式返回給客戶。由于Web數(shù)據(jù)庫處于網(wǎng)絡環(huán)境中,存在很多安全隱患。因此,必須采取措施來保證系統(tǒng)的安全性。
圖3 Web數(shù)據(jù)庫訪問方式
數(shù)據(jù)庫的安全性是指保護數(shù)據(jù)庫以防止非法使用所造成的數(shù)據(jù)泄露、更改或破壞。數(shù)據(jù)庫安全模型是一種高層抽象、獨立于軟件實現(xiàn)的概念模型,用于精確地描述該系統(tǒng)的安全需求和安全策略。
如圖4所示,當用戶向Web服務器發(fā)出請求時,首先要進行身份驗證,只有當驗證通過時才能進行訪問權(quán)限的分配和訪問控制的限制,否則服務器拒絕請求。當用戶獲得訪問權(quán)限后,先通過防火墻過濾,然后再對服務器進行訪問。訪問期間對每個用戶的行為都要進行審計追蹤和日志記錄,對于敏感數(shù)據(jù)進行加密。此外,為了更好地保護數(shù)據(jù)庫的安全,要對數(shù)據(jù)庫進行加密存儲。
圖4 數(shù)據(jù)庫安全模型
2.2.1 用戶身份認證
為了防止用戶未經(jīng)授權(quán)非法訪問數(shù)據(jù)庫,本系統(tǒng)采用用戶身份認證機制,涉及客戶端、Web應用程序和后臺數(shù)據(jù)庫3個方面。
(1)客戶端:采用基于口令的身份認證機制,用用戶名標識用戶身份,經(jīng)系統(tǒng)驗證用戶的合法性后,再用口令進一步核實用戶身份。為了保證用戶名和口令的安全性,首先對用戶名和口令進行加密,然后再向服務器傳輸;服務器收到信息后進行解密。
(2)Web應用程序:可用身份認證機制保護被限制的ASP內(nèi)容。只有擁有合法的Windows NT賬號的用戶名和密碼的用戶才能對限制的ASP內(nèi)容進行訪問,否則拒絕。
(3)后臺數(shù)據(jù)庫:用戶在客戶端輸入用戶名、口令,服務器端在收到瀏覽器端的請求后與數(shù)據(jù)庫建立連接,將用戶輸入信息與數(shù)據(jù)庫中用戶表中記錄(含用戶名、密碼和訪問權(quán)限等)進行比較,若合法,則允許其根據(jù)訪問權(quán)限對數(shù)據(jù)庫進行訪問,否則拒絕。為了進一步完善ASP的安全機制,本系統(tǒng)利用ASP提供的Session內(nèi)置對象來保存特定用戶的信息。當用戶合法登錄進入系統(tǒng)后,將Session對象的ID保存起來,每次當用戶向服務器發(fā)出請求時,將當前Session ID與保存的ID進行比較,若相符,則服務器給予響應,否則拒絕。
2.2.2 防火墻技術(shù)
防火墻是一種高級訪問控制設備,置于不同網(wǎng)絡安全域之間的一系列部件的組合,它是不同網(wǎng)絡安全域之間通信流的唯一通道,能根據(jù)有關(guān)的安全策略控制(允許、拒絕、監(jiān)視、記錄)進出網(wǎng)絡的訪問行為。在數(shù)據(jù)庫應用中,防火墻技術(shù)一般分為2種:包過濾和代理。包過濾作用在協(xié)議組的網(wǎng)絡層和傳輸層,根據(jù)包過濾規(guī)則確定是否允許數(shù)據(jù)包通過。代理作用在應用層,通過對每種應用服務編制專門的代理程序,實現(xiàn)監(jiān)視和控制應用層通信流的作用。本系統(tǒng)中使用復合型防火墻技術(shù),如圖5所示,當從內(nèi)部網(wǎng)向外部網(wǎng)發(fā)出請求時,直接通過包過濾型防火墻和外部網(wǎng)建立連接即可;當從外部網(wǎng)向內(nèi)部網(wǎng)發(fā)出請求時,則要先通過包過濾型防火墻,再通過代理型防火墻的檢查確定是否接受其請求。這樣就結(jié)合了包過濾和代理兩者的優(yōu)點,既保證了一定的安全性,又不影響信息傳輸速度。
圖5 復合型防火墻
2.2.3 基于角色的訪問控制
為了讓經(jīng)過身份認證的合法用戶根據(jù)權(quán)限來訪問數(shù)據(jù)庫系統(tǒng),本系統(tǒng)采用基于角色的訪問控制機制,其核心思想是將角色和權(quán)限相聯(lián)系,通過用戶分配的角色,讓用戶與訪問權(quán)限相聯(lián)系。結(jié)合計量事業(yè)單位的組織結(jié)構(gòu),系統(tǒng)管理員可以給用戶分配技術(shù)負責人、質(zhì)量負責人、各科室負責人和檢定人員等角色,再給各角色賦予相應的訪問權(quán)限。用戶在登錄系統(tǒng)時輸入用戶名和密碼,通過身份驗證后激活相應的角色,并依據(jù)其權(quán)限對系統(tǒng)進行訪問。
一個用戶可以擁有一個或多個角色,一個角色對應一組權(quán)限。角色可以根據(jù)需要產(chǎn)生或取消,當一個人的職位發(fā)生變化時,只要將該用戶與當前的角色分離,再把他賦予新的角色即可。系統(tǒng)管理員重點關(guān)注用戶和角色之間的映射,簡化了用戶的權(quán)限管理。
2.2.4 數(shù)據(jù)加密
數(shù)據(jù)加密的基本思想是根據(jù)一定的算法將原始數(shù)據(jù)(明文)加密成為不可直接識別的格式(密文)文件,數(shù)據(jù)以密文的形式存儲和傳播。數(shù)據(jù)庫的保密問題不僅包括在傳輸過程中采用加密保護的控制非法訪問,還包括對存儲的敏感數(shù)據(jù)進行加密保護。
(1)數(shù)據(jù)傳輸?shù)募用堋?/p>
數(shù)據(jù)加密技術(shù)包括對稱加密和非對稱加密2大類。對稱加密即加密和解密均采用同一把密鑰,數(shù)據(jù)傳輸速度較快,但是通信雙方必須事先統(tǒng)一密鑰,一旦發(fā)送途中丟失,接收方就不可能重新得到密文的內(nèi)容,而且當多人通信時密鑰的組合的數(shù)量會急劇增多,增加了分發(fā)密鑰的代價和難度。非對稱加密即收信人生成2把數(shù)學上相互關(guān)聯(lián)但又不同的公鑰和私鑰,私鑰自己保存,將公鑰公布出去,發(fā)信人用收信人公布的公鑰對數(shù)據(jù)進行加密,收信人收到數(shù)據(jù)后用自己的私鑰進行解密;非對稱加密可以公布公鑰,避免了密鑰分配帶來的麻煩,但是數(shù)據(jù)傳輸?shù)乃俣容^慢。結(jié)合兩者的優(yōu)點,本系統(tǒng)采用混合密碼,用對稱加密算法DES對明文進行加密,用非對稱加密算法RSA對給明文加密的密鑰進行加密。這樣,在通信前就不用再進行秘密的密鑰分配,而且數(shù)據(jù)傳輸?shù)乃俣群芸臁?/p>
(2)數(shù)據(jù)存儲的加密。
數(shù)據(jù)庫中存在一些敏感數(shù)據(jù),即不應公開的數(shù)據(jù)。本系統(tǒng)對這些敏感數(shù)據(jù)采取基于字段的加密技術(shù),以不同記錄的不同字段為基本單位進行加密。該方法可以對數(shù)據(jù)庫中單個數(shù)據(jù)元素進行加密,具有最小的加密粒度,更好的靈活性和適應性。
2.2.5 審計追蹤與入侵檢測
為了確保可查性,當用戶在操作數(shù)據(jù)庫時,數(shù)據(jù)庫管理系統(tǒng)(DBMS)將用戶操作的相關(guān)信息如操作類型(修改、查詢、刪除)、操作時間、站點使用情況和服務器使用情況等信息記錄在審計日志中給系統(tǒng)管理員查閱分析,一旦出現(xiàn)安全問題,管理員可以迅速找出非法操作人員。
攻擊檢測主要是對網(wǎng)絡和計算機系統(tǒng)進行有效的監(jiān)控,根據(jù)審計數(shù)據(jù)分析檢測內(nèi)部和外部攻擊者的攻擊企圖,找出系統(tǒng)安全的弱點,能夠及時有效地反映出是否有入侵或濫用的情況。
2.3.1 數(shù)據(jù)庫路徑安全保護
數(shù)據(jù)庫的安全不僅包括數(shù)據(jù)庫中數(shù)據(jù)對象的安全,還包括數(shù)據(jù)庫路徑的安全。一旦數(shù)據(jù)庫路徑暴露,用戶就可以進行下載,數(shù)據(jù)庫信息泄露。為了防止這種情況的發(fā)生,可以采取以下措施:
(1)在IIS中,找到系統(tǒng)的虛擬目錄,右鍵單擊,選擇“屬性”->“虛擬目錄選卡”->“配置”->“應用程序配置”,在應用程序映射中為.mdb添加一個可執(zhí)行程序即可。
(2)數(shù)據(jù)庫文件默認的后綴名為.mdb,為了增加用戶識別的難度,可以將后綴名改為.aspx等,避免后臺數(shù)據(jù)庫被用戶從客戶端下載。
(3)給數(shù)據(jù)庫文件起一個復雜的非常規(guī)名字,并把它放在幾個目錄下,這樣增加了用戶找到該文件的代價和難度。
2.3.2 防SQL注入攻擊
SQL注入攻擊就是向服務器提交一段事先準備好的數(shù)據(jù),拼湊出攻擊者想要的SQL語句,以改變程序預期的執(zhí)行結(jié)果。其本質(zhì)就是攻擊者利用構(gòu)造的畸形SQL語句,通過開放的Web服務器輸入端口,把其發(fā)送到數(shù)據(jù)庫去執(zhí)行。
(1)SQL注入攻擊過程。
如圖6所示,首先在有參數(shù)傳入的地方添加諸如“or 1=1”、“’”等一些特殊字符,通過瀏覽器返回的錯誤信息來判斷是否存在SQL注入點,若存在則對SQL注入點進行驗證,然后判斷存在注入點的數(shù)據(jù)庫是否支持多語句查詢、子查詢、數(shù)據(jù)庫用戶賬號、數(shù)據(jù)庫用戶權(quán)限等。若注入的數(shù)據(jù)庫用戶為SA,則可以直接添加管理員賬號、開放遠程終端服務等,否則只能通過字段內(nèi)容的猜測來破解用戶和密碼。
圖6 SQL注入攻擊實現(xiàn)過程
(2)SQL注入攻擊防范模型。
本系統(tǒng)在前人提出的檢測/防御/備案模型的基礎上進行優(yōu)化,如圖7所示。對于用戶提交的信息,系統(tǒng)在客戶端不做處理,而在服務器端未提交處理之前進行檢測。
服務器獲得用戶提交的IP后,首先在攻擊備案數(shù)據(jù)庫中查找是否存在該IP地址記錄,若存在,則拒絕用戶請求,在客戶端提示出錯,并將相關(guān)信息添加到攻擊備案數(shù)據(jù)庫中,否則繼續(xù)進行非法字符檢測。將用戶提交的字符串與非法字符庫中的字符進行比較,若存在則在客戶端提示出錯,并發(fā)送短信通知系統(tǒng)管理員進行處理,否則處理提交用戶信息并將結(jié)果以Web頁面的形式返回給客戶端。
將所有代碼存放在injection.asp文件中,只在需要防范的頁面中包含該文件即可,使用起來十分便利。
圖7 優(yōu)化的檢測/防御/備案模型
本系統(tǒng)采用ASP+IIS+SQL Server 2005的平臺架構(gòu),為了防止SQL注入攻擊,對系統(tǒng)做如下設置:
(1)IIS的設置。
①修改IIS返回的異常信息:把IIS默認的異常提示頁面由500~100改為500即可,這樣無論程序運行中出現(xiàn)什么錯誤都將只提示“HTTP 500”錯誤。
②控制網(wǎng)站的權(quán)限分配:一般情況下對于動態(tài)網(wǎng)站只授予“純腳本”權(quán)限,靜態(tài)網(wǎng)站不授予“腳本和可執(zhí)行”權(quán)限,而那些通過網(wǎng)站上傳的文件存放的目錄,則將權(quán)限設為“無”。
③目錄最小化權(quán)限設置:給靜態(tài)目錄網(wǎng)頁和動態(tài)目錄網(wǎng)頁分別設置不同權(quán)限,盡量不給寫權(quán)限。
(2)SQL Server的設置。
①配置數(shù)據(jù)庫權(quán)限:嚴格控制SA級別的權(quán)限,不能隨意配置。對于用于連接程序和數(shù)據(jù)庫的用戶則使用數(shù)據(jù)庫用戶角色組成員,只給予數(shù)據(jù)庫讀和寫權(quán)限,遇到需要備份的用戶最好另行新建用戶。
②加密數(shù)據(jù)庫連接文件。
③改變SQL Server的端口:用防火墻關(guān)閉TCP 1433/UDP 1434端口對外的連接,避免被非法利用。
本文介紹計量信息管理系統(tǒng)的設計與實現(xiàn),重點討論了系統(tǒng)數(shù)據(jù)庫安全問題。系統(tǒng)中不僅使用了常見的用戶標識和鑒別、防火墻技術(shù)、基于角色的訪問控制、數(shù)據(jù)加密、審計追蹤與入侵檢測等技術(shù),還考慮了數(shù)據(jù)庫路徑安全,并使用防SQL注入攻擊等方法來提高數(shù)據(jù)庫的安全性。該系統(tǒng)已應用于計量事業(yè)單位中,有效地提高了工作效率,保證了數(shù)據(jù)的安全性。然而,系統(tǒng)中還存在一些不完善之處,如用戶身份認證中基于口令的身份認證機制中的漏洞、數(shù)據(jù)庫安全模型的優(yōu)化和防火墻的選擇等,需要進一步地提高。
[1]朱建冰.基于ASP_NET的計量管理信息系統(tǒng)[J].計量與測試技術(shù),2011,38(1):15-16.
[2]高少杰.SQL注入攻擊防御方法研究[D].昆明:云南大學,2010.
[3]劉海勇.基于B_S模式的Web數(shù)據(jù)庫安全機制應用研究[J].科技情報開發(fā)與經(jīng)濟,2007,17(12):229-130.
[4]Lee Inyong,Jeong Soonki,Yeo Sangsoo,et al.A novel method for SQL injection attack detection based on removing SQL query attribute values[J].Mathematical and Computer Modelling,2011,55(1):58-68.
[5]Carles Martinez-Garcia,Guillermo Navarro-Arribas,Joan Borrell.F-uzzy role-based access control[J].Information Processing Letters,2011,111(1):483-487.
[6]Sreelaja N K,Vijayalakshmi Pai G A.Ant colony optimization based approach for efficient packet filtering in firewall[J].Applied Soft Computing,2010,10(4):1222-1236.
[7]Zhang Haixia,Su Purui,F(xiàn)eng Dengguo.A network security analysis model based on the increase in attack ability[J].Journal of Computer Research and Development,2007,44(12):2012-2019.
[8]Dusan Petkovic.Microsoft SQL Server 2005:A Beginner’s Guide[M].McGraw-Hill Osborne Media,2005.
[9]Sylvia Osborn.Database security integration using role-based access control[J].Data and Application Security,2002,73:245-257.
[10]張敏,徐震,馮登國.數(shù)據(jù)庫安全[M].北京:科學出版社,2005.
[11]呂金秋.Web數(shù)據(jù)庫安全技術(shù)研究與應用[D].長春:吉林大學,2009.
[12]李華.計量系統(tǒng)中數(shù)據(jù)庫安全審計技術(shù)的應用研究[D].北京:北方工業(yè)大學,2008.
[13]郜激揚.基于Web服務的數(shù)據(jù)庫注入攻擊與防范[J].華北水利水電學院學報,2008,29(1):89-91.