專利名稱:一種基于自定義安全jdbc驅(qū)動的數(shù)據(jù)庫防護方法
技術領域:
本發(fā)明涉及信息安全技術領域的安全防護方法,特別是涉及一種基于自定義安全JDBC驅(qū)動的數(shù)據(jù)庫防護方法。
背景技術:
隨著信息技術的飛速發(fā)展,數(shù)據(jù)庫的廣泛應用到包括黨政軍在內(nèi)的各個領域。數(shù) 據(jù)庫系統(tǒng)成為了業(yè)務應用信息首選持久化存儲,是各個信息系統(tǒng)的數(shù)據(jù)核心,其安全性至
關重要。在國內(nèi)涉密單位或者大型企業(yè)中,已廣泛采取機房門禁、網(wǎng)絡隔離、入侵檢測、力口 密認證等多種方式進行整體防護。但是業(yè)界缺少針對數(shù)據(jù)庫訪問進行防護的安全增強產(chǎn)品。常規(guī)的數(shù)據(jù)庫防火墻、IDS/IPS等防護方式,無法深入理解通信中數(shù)據(jù)庫操作具體 內(nèi)容,只能進行初級的的端口、協(xié)議、地址等網(wǎng)絡層過濾,無法有效針對數(shù)據(jù)庫的訪問進行 針對性防護。
發(fā)明內(nèi)容
發(fā)明目的針對現(xiàn)有技術的不足,本發(fā)明提出的是一種基于自定義安全JDBC (JavaData Base Connectivity)驅(qū)動的數(shù)據(jù)庫防護方法。通過實現(xiàn)一個自定義安全JDBC驅(qū)動(下文簡稱為 安全JDBC驅(qū)動),搭配安全檢查器與操作轉(zhuǎn)換器,達到對用戶所有JDBC調(diào)用的全過程控制 與審計,以及對執(zhí)行SQL語句的基本注入特征分析,從而提升數(shù)據(jù)庫訪問的安全防護能力。 在整個的處理流程中,安全JDBC驅(qū)動與操作轉(zhuǎn)換器之間的交互以及安全檢查器對SQL請求 的檢查與審計對于上層用戶完全透明。技術方案本發(fā)明實現(xiàn)的技術方案如下安全JDBC驅(qū)動部署在應用服務器上代替標準JDBC驅(qū)動。除了完全實現(xiàn)JDBC 3. 0 標準接口的所有接口功能,安全JDBC驅(qū)動能夠通過與安全檢查器的聯(lián)動實現(xiàn)對SQL語句的 安全檢查與操作審計。檢查合格的數(shù)據(jù)庫請求,將會被轉(zhuǎn)發(fā)至操作轉(zhuǎn)換器。安全JDBC驅(qū)動 與操作轉(zhuǎn)換器之間的通信采用自定義的通信協(xié)議,并且支持自定義的加密算法或SSL加密 算法。操作轉(zhuǎn)換器通過對加密后的數(shù)據(jù)庫請求進行解密,提取相應的執(zhí)行命令,進行真實數(shù) 據(jù)庫的執(zhí)行。執(zhí)行完成后,操作轉(zhuǎn)換器負責將返回的結(jié)果集返回給安全JDBC驅(qū)動。應用程序通過本方法進行數(shù)據(jù)庫操作時具體包括以下步驟1)系統(tǒng)啟動時,應用程序?qū)⑾仍L問安全檢查器獲得安全策略文件,將安全策略寫 入內(nèi)存,然后利用安全JDBC驅(qū)動與操作轉(zhuǎn)換器建立持久TCP連接;2)應用程序進行數(shù)據(jù)庫操作時,直接調(diào)用自定義JDBC接口 ;3)安全JDBC驅(qū)動進行接口級安全過濾。調(diào)用安全檢查器接口進行,對SQL操作語句進行注入特征安全檢查;4)操作若檢查失敗,不滿足策略要求,則會在JDBC驅(qū)動中拋出相應的JAVA異常;5)操作若檢查通過,滿足策略要求,安全JDBC驅(qū)動則會將具體操作傳遞至操作轉(zhuǎn) 換器進行轉(zhuǎn)換與執(zhí)行;6)操作轉(zhuǎn)換器將數(shù)據(jù)庫上的執(zhí)行結(jié)果進行返回,最后返回至應用程序?;谧远?義安全JDBC驅(qū)動的數(shù)據(jù)庫防護方法實現(xiàn)如下功能
1)完全實現(xiàn)JDBC標準的所有必需接口。2)設計并實現(xiàn)一套自定義傳輸格式,傳輸JDBC中的各種命令和數(shù)據(jù)。3)設計并實現(xiàn)一套自定義加密算法。4)設計并實現(xiàn)安全策略格式,并將策略應用在JDBC的操作接口中。本發(fā)明的進一步方案可以是所述安全JDBC驅(qū)動不針對某一特定數(shù)據(jù)庫,因此為了保證最大程度的通用性,安 全JDBC驅(qū)動實現(xiàn)了標準JDBC 3.0接口的所有通用功能。安全JDBC驅(qū)動包含三類接口 一 類是提供給上層應用系統(tǒng)調(diào)用的標準JDBC接口 ;一類是進行緩沖區(qū)管理、安全檢查等內(nèi)部 支持接口 ;一類是與操作轉(zhuǎn)換器之間進行數(shù)據(jù)通信的消息處理接口,如圖2。本發(fā)明的進一步方案可以是所述JDBC驅(qū)動與操作轉(zhuǎn)換器之間的通信采用自定義通信協(xié)議,傳輸協(xié)議是構(gòu)建 在TCP/IP協(xié)議基礎之上的應用層協(xié)議。消息協(xié)議的設計囊括安全JDBC驅(qū)動與操作轉(zhuǎn)換器 之間的所有通信要求并具有充分的可擴展性。協(xié)議報文總體分為如下幾類加密(認證)協(xié) 商協(xié)議;版本協(xié)商協(xié)議;連接協(xié)議;登錄認證協(xié)議;客戶端安全策略協(xié)議;數(shù)據(jù)庫操作協(xié)議; 配置管理協(xié)議;錯誤協(xié)議。所有通訊均支持可選自定義加密或者SSL加密,防止網(wǎng)絡竊聽。本發(fā)明的進一步方案可以是所述安全JDBC驅(qū)動同操作轉(zhuǎn)換器之間的交互總體上分為兩個過程握手過程和 數(shù)據(jù)庫訪問過程。握手過程是系統(tǒng)啟動階段安全JDBC驅(qū)動和操作轉(zhuǎn)換器之間建立TCP連 接,并確認對方的身份以及協(xié)商對稱密鑰的過程。數(shù)據(jù)庫訪問過程是指在握手過程以后上 次應用程序調(diào)用安全JDBC接口,通過操作轉(zhuǎn)換器進行數(shù)據(jù)庫訪問。本發(fā)明的進一步方案可以是所述安全檢查器中的安全策略可以靈活配置,包含但不限于用于防SQL注入的 正則表達式規(guī)則;用于防應用程序惡意操作的限制單個Connection打開statement數(shù)量的 規(guī)則;用于防傳輸exe等類型大字段的二進制匹配規(guī)則等。有益效果本發(fā)明達到對用戶所有JDBC調(diào)用的全過程控制與審計,以及對執(zhí)行SQL語句的基 本注入特征分析,從而提升數(shù)據(jù)庫訪問的安全防護能力。在整個的處理流程中,安全JDBC 驅(qū)動與操作轉(zhuǎn)換器之間的交互以及安全檢查器對SQL請求的檢查與審計對于上層用戶完 全透明。
圖1是本發(fā)明流程示意圖;圖2是自定義安全JDBC接口組成圖3是握手過程示意圖;圖4是數(shù)據(jù)庫操作過程。
具體實施例方式以下結(jié)合附圖對本發(fā)明作進一步說明。本方法的安全JDBC驅(qū)動部署在應用服務器上,將連接字符串指向安全監(jiān)視器與操作轉(zhuǎn)換器。在操作轉(zhuǎn)換器上配置后臺數(shù)據(jù)庫的信息??梢詫⒉僮鬓D(zhuǎn)換器按照堡壘機的方 式部署在應用服務器與數(shù)據(jù)庫服務器之間,以獲得更好的效果。為增強應用系統(tǒng)的安全性, 本發(fā)明的方法對數(shù)據(jù)庫訪問的方式進行了改變,監(jiān)視并控制數(shù)據(jù)庫訪問接口。本發(fā)明方法 可阻止對數(shù)據(jù)庫系統(tǒng)SQL注入、上傳惡意文件、惡意消耗數(shù)據(jù)庫資源等威脅,增強應用系統(tǒng) 的整體安全防護能力。安全JDBC驅(qū)動同操作轉(zhuǎn)換器之間的交互總體上分為兩個過程握手過程和數(shù)據(jù) 庫訪問過程。握手過程是系統(tǒng)啟動階段安全JDBC驅(qū)動和操作轉(zhuǎn)換器之間建立TCP連接,并 確認對方的身份以及協(xié)商對稱密鑰的過程。數(shù)據(jù)庫訪問過程是指在握手過程以后上次應用 程序調(diào)用安全JDBC接口,通過操作轉(zhuǎn)換器進行數(shù)據(jù)庫訪問。在兩種交互的過程中,為了保 護數(shù)據(jù)傳輸安全,相互之間交互的報文都將進行加密。本發(fā)明的報文加密設計主要采用了非對稱加密算法、對稱加密算法、隨機數(shù)生成 算法、DH密鑰交換算法。非對稱加密算法用于握手過程中的數(shù)據(jù)加密。對稱加密算法用于 數(shù)據(jù)庫訪問過程的數(shù)據(jù)加密。DH密鑰交換算法以及隨機數(shù)生成算法用于生成對稱密鑰。握 手過程使用DH密鑰交換算法產(chǎn)生數(shù)據(jù)庫訪問過程加密使用的對稱密鑰。一個典型的交互示例用戶單擊應用系統(tǒng)某查詢頁面,應用程序生成查詢語句,并 調(diào)用安全JDBC驅(qū)動。安全JDBC驅(qū)動負責對用戶的操作請求進行安全檢查與審計,然后將其 轉(zhuǎn)換為自定義的消息傳給操作轉(zhuǎn)換器,操作轉(zhuǎn)換器在解析消息后生成對應的標準JDBC請 求,通過本地的數(shù)據(jù)庫廠商提供的JDBC和真正的數(shù)據(jù)庫服務器進行交互,執(zhí)行成功以后將 結(jié)果集返回給應用服務器。具體流程如下1.握手過程1)安全JDBC驅(qū)動與操作轉(zhuǎn)換器通過三次握手建立TCP連接;2)雙方進行加密協(xié)商,協(xié)商一個用于加密以后傳輸報文的對稱密鑰;3)雙方進行版本協(xié)商,確定交互雙方的版本;4)進行用戶身份認證,通過對用戶名和密碼的校驗,檢查相應的用戶是否具備訪 問操作轉(zhuǎn)換器的權限。2.數(shù)據(jù)庫操縱過程1)上層應用系統(tǒng)產(chǎn)生數(shù)據(jù)庫訪問請求,調(diào)用安全JDBC接口 ;2)進行接口過濾,阻擋一些自定義的非法JDBC調(diào)用,如針對特定系統(tǒng)表的操作, 刪除特定表的操作等。當非法JDBC調(diào)用發(fā)生時,發(fā)出警報并終止請求;3)調(diào)用安全檢查器接口,進行SQL語句的安全檢查,檢查不通過則拋出“檢測到可 疑SQL語句”的SQLExc印tion,同時記錄相關日志信息;4)檢查合格后,提取SQL請求相關信息,比如原始SQL語句,操作類型等組裝為自 定義消息報文;
5)利用握手過程中協(xié)商的對稱密鑰對報文進行加密;6)調(diào)用通信接口,發(fā)送報文;7)操作轉(zhuǎn)換器接收報文,并進行解密,提取數(shù)據(jù)庫操作命令以及相關信息;
8)調(diào)用后臺標準JDBC驅(qū)動,進行真實數(shù)據(jù)庫訪問,并獲取結(jié)果集;9)將返回結(jié)果集組裝為自定義報文,通過通信接口進行發(fā)送。
權利要求
一種基于自定義安全JDBC驅(qū)動的數(shù)據(jù)庫防護方法,其特征在于,包括以下步驟1)系統(tǒng)啟動時,應用程序?qū)⑾仍L問安全檢查器獲得安全策略文件,將安全策略寫入內(nèi)存,然后利用安全JDBC驅(qū)動與操作轉(zhuǎn)換器建立持久TCP連接;2)應用程序進行數(shù)據(jù)庫操作時,直接調(diào)用自定義JDBC接口;3)安全JDBC驅(qū)動進行接口級安全過濾,調(diào)用安全檢查器接口進行,對SQL操作語句進行注入特征安全檢查;4)操作若檢查失敗,不滿足策略要求,則會在JDBC驅(qū)動中拋出相應的JAVA異常;5)操作若檢查通過,滿足策略要求,安全JDBC驅(qū)動則會將具體操作傳遞至操作轉(zhuǎn)換器進行轉(zhuǎn)換與執(zhí)行;6)操作轉(zhuǎn)換器將數(shù)據(jù)庫上的執(zhí)行結(jié)果進行返回,最后返回至應用程序。
2.根據(jù)權利要求1所述的一種基于自定義安全JDBC驅(qū)動的數(shù)據(jù)庫防護方法,其特征在 于,所述安全JDBC驅(qū)動實現(xiàn)了標準JDBC 3. 0接口的所有通用功能。
3.根據(jù)權利要求1所述的一種基于自定義安全JDBC驅(qū)動的數(shù)據(jù)庫防護方法,其特征在 于,所述的安全JDBC驅(qū)動與操作轉(zhuǎn)換器建立持久TCP連接的應用層協(xié)議是自定義的。
4.根據(jù)權利要求1所述的一種基于自定義安全JDBC驅(qū)動的數(shù)據(jù)庫防護方法,其特征在 于,所述的安全JDBC驅(qū)動與操作轉(zhuǎn)換器建立持久TCP連接包括握手過程和數(shù)據(jù)庫訪問過 程;握手過程是啟動階段安全JDBC驅(qū)動和操作轉(zhuǎn)換器之間建立TCP連接,并確認對方的身 份以及協(xié)商對稱密鑰的過程;數(shù)據(jù)庫訪問過程是指在握手過程以后上次應用程序調(diào)用安全 JDBC接口,通過操作轉(zhuǎn)換器進行數(shù)據(jù)庫訪問。
全文摘要
本發(fā)明公開了一種基于自定義安全JDBC驅(qū)動的數(shù)據(jù)庫防護方法,包括以下步驟系統(tǒng)啟動時,應用程序?qū)⑾仍L問安全檢查器獲得安全策略文件,將安全策略寫入內(nèi)存,然后利用安全JDBC驅(qū)動與操作轉(zhuǎn)換器建立持久TCP連接;應用程序進行數(shù)據(jù)庫操作時,直接調(diào)用自定義JDBC接口;安全JDBC驅(qū)動進行接口級安全過濾,調(diào)用安全檢查器接口進行,對SQL操作語句進行注入特征安全檢查;操作若檢查失敗,不滿足策略要求,則會在JDBC驅(qū)動中拋出相應的JAVA異常;操作若檢查通過,滿足策略要求,安全JDBC驅(qū)動則會將具體操作傳遞至操作轉(zhuǎn)換器進行轉(zhuǎn)換與執(zhí)行;操作轉(zhuǎn)換器將數(shù)據(jù)庫上的執(zhí)行結(jié)果進行返回,最后返回至應用程序。
文檔編號G06F17/30GK101833620SQ201010159269
公開日2010年9月15日 申請日期2010年4月28日 優(yōu)先權日2010年4月28日
發(fā)明者張濤, 戴造建, 林為民, 石聰聰, 秦浩, 秦超, 陳浩 申請人:國網(wǎng)電力科學研究院