核心數(shù)據(jù)安全傳輸及存儲(chǔ)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)數(shù)據(jù)安全技術(shù),具體涉及核心數(shù)據(jù)安全傳輸及存儲(chǔ)方法。
【背景技術(shù)】
[0002]如今,有些軟件應(yīng)用平臺(tái)的服務(wù)對(duì)象涉及大型采購商企業(yè)、銀行等各種金融機(jī)構(gòu)。前述這類軟件應(yīng)用平臺(tái)對(duì)一些敏感、核心數(shù)據(jù)(例如財(cái)務(wù)數(shù)據(jù))的傳輸和存儲(chǔ)都有一定的要求,尤其是安全、保密、防篡改等方面的要求。
[0003]現(xiàn)有技術(shù)中,為了便于數(shù)據(jù)的解析、存儲(chǔ)和識(shí)別,往往會(huì)給數(shù)據(jù)對(duì)象定義一些含有特定意義的稱謂,比如金額(amount)、凈利潤(net-profit)等。這些含有特殊意義的稱謂使得所傳輸和存儲(chǔ)的數(shù)據(jù)淺顯易懂,便于實(shí)現(xiàn)數(shù)據(jù)的展示和再挖掘;但另一方面,也會(huì)導(dǎo)致一旦數(shù)據(jù)庫出現(xiàn)一些非法的請(qǐng)求或者入侵,這些敏感數(shù)據(jù)就很容易被竊取,給軟件應(yīng)用平臺(tái)的客戶帶來不必要的嚴(yán)重?fù)p失。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提供核心數(shù)據(jù)安全傳輸及存儲(chǔ)方法,解決了現(xiàn)有技術(shù)中核心數(shù)據(jù)容易被竊取、安全性低的技術(shù)問題。
[0005]為解決上述技術(shù)問題,本發(fā)明方法采用如下技術(shù)方案:核心數(shù)據(jù)安全傳輸及存儲(chǔ)方法,包括以下步驟:S1、將核心數(shù)據(jù)的存儲(chǔ)經(jīng)過數(shù)據(jù)庫防注入加固處理;S2、根據(jù)不同的使用功能,把核心數(shù)據(jù)進(jìn)行對(duì)象化封裝;S3、采用加密方式傳輸核心數(shù)據(jù),把加密后的字符串通過響應(yīng)流返回給客戶端。
[0006]優(yōu)選地,所述步驟SI包括:對(duì)請(qǐng)求參數(shù)進(jìn)行防注入檢測:在客戶端發(fā)起數(shù)據(jù)請(qǐng)求之后,接口程序獲取所輸入的請(qǐng)求參數(shù),根據(jù)其使用類型做類型強(qiáng)校驗(yàn)。
[0007]優(yōu)選地,所述步驟SI包括:把數(shù)據(jù)存儲(chǔ)操作寫成數(shù)據(jù)庫存儲(chǔ)過程,通過數(shù)據(jù)庫存儲(chǔ)過程調(diào)用數(shù)據(jù)庫數(shù)據(jù);限制數(shù)據(jù)庫賬戶的權(quán)限,賦予每個(gè)數(shù)據(jù)庫賬戶可正常使用的最小權(quán)限外,對(duì)執(zhí)行不同數(shù)據(jù)庫操作的賬戶賦予不同的權(quán)限。
[0008]所述類型強(qiáng)校驗(yàn)過程為:從請(qǐng)求參數(shù)中獲取字符串類型的參數(shù),通過使用正則匹配檢查,把常見的可能會(huì)導(dǎo)致數(shù)據(jù)庫入侵的關(guān)鍵詞組合成正則表達(dá)式,去檢驗(yàn)請(qǐng)求參數(shù)是否合法;若判斷請(qǐng)求參數(shù)合法,根據(jù)該請(qǐng)求參數(shù)的實(shí)際使用類型,通過類型轉(zhuǎn)換把字符串轉(zhuǎn)換成實(shí)際使用類型,如果類型轉(zhuǎn)換失敗,則請(qǐng)求參數(shù)存在異常,轉(zhuǎn)入異常處理。
[0009]優(yōu)選地,所述步驟S2為:把大量復(fù)雜的數(shù)據(jù)按照不同的使用功能,細(xì)分并封裝成不同的獨(dú)立功能對(duì)象,每個(gè)功能對(duì)象對(duì)應(yīng)一張數(shù)據(jù)庫表,功能對(duì)象中的屬性對(duì)應(yīng)數(shù)據(jù)庫表中的數(shù)據(jù)字段,數(shù)據(jù)字段在命名上使用無意義字段標(biāo)識(shí),從而對(duì)數(shù)據(jù)字段含義做隱藏。所述數(shù)據(jù)字段的命名方式為:字符加數(shù)字組合的命名方式。
[0010]優(yōu)選地,所述步驟S3為:定義每個(gè)獨(dú)立功能對(duì)象時(shí),繼承一個(gè)提供Json序列化處理的父類,所述父類中重載了一個(gè)Json序列化的方法;當(dāng)客戶端發(fā)起某個(gè)功能的數(shù)據(jù)請(qǐng)求時(shí),先把從數(shù)據(jù)庫中查詢出來的數(shù)據(jù)實(shí)例化為對(duì)應(yīng)的功能對(duì)象,通過調(diào)用重載父類的序列化方法,獲取功能對(duì)象的Json序列化字符串,然后經(jīng)過編碼加密處理,把加密后的字符串通過響應(yīng)流返回給客戶端。
[0011]與現(xiàn)有技術(shù)相比,本發(fā)明具有如下優(yōu)點(diǎn)和有益效果:
[0012]1、通過數(shù)據(jù)庫防注入加固,調(diào)用數(shù)據(jù)庫統(tǒng)一使用存儲(chǔ)過程操作,傳遞給存儲(chǔ)過程的參數(shù)采用準(zhǔn)確類型定義,最大程度上保護(hù)了數(shù)據(jù)庫的安全,同時(shí)通過修改數(shù)據(jù)庫存儲(chǔ)過程來調(diào)整數(shù)據(jù)提取邏輯,避免了大量的頁面邏輯修改工作,大大提高了開發(fā)效率。
[0013]2、將數(shù)據(jù)進(jìn)行對(duì)象化的封裝,把大量復(fù)雜的數(shù)據(jù)按照不同的使用功能,細(xì)分并封裝成不同的獨(dú)立對(duì)象,便于項(xiàng)目的模塊化組織和高效并行開發(fā),同時(shí)對(duì)象化的數(shù)據(jù)也利于軟件的后期維護(hù),針對(duì)模塊的修改不影響程序全局,大大降低了軟件的維護(hù)成本,提高軟件的二次開發(fā)能力和可重復(fù)利用性。
[0014]3、經(jīng)過base64編碼加密的Json字符串,在數(shù)據(jù)傳遞過程中,既能有效保護(hù)數(shù)據(jù)的安全性,又能通過約定好的數(shù)據(jù)字段定義文檔,輕松對(duì)照解析得到所需要的數(shù)據(jù)。把核心數(shù)據(jù)含義從程序代碼中剝離出來,最大限度的保護(hù)了數(shù)據(jù)的安全。
【附圖說明】
[0015]圖1為本發(fā)明的流程圖。
【具體實(shí)施方式】
[0016]下面結(jié)合實(shí)施例及附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)的描述,但本發(fā)明的實(shí)施方式不限于此。
[0017]實(shí)施例
[0018]參見圖1,核心數(shù)據(jù)安全傳輸及存儲(chǔ)方法包括以下步驟:
[0019]1、數(shù)據(jù)庫防注入加固處理
[0020]在本實(shí)施例中,數(shù)據(jù)庫防注入加固處理包括以下兩個(gè)步驟:
[0021](I)、參數(shù)防注入檢測。
[0022]首先對(duì)請(qǐng)求參數(shù)進(jìn)行防注入檢測:在客戶端發(fā)起數(shù)據(jù)請(qǐng)求之后,接口程序獲取所輸入的請(qǐng)求參數(shù)(傳遞給存儲(chǔ)過程的請(qǐng)求參數(shù)聲明要準(zhǔn)確),根據(jù)其使用類型做類型強(qiáng)校驗(yàn)。首先,從請(qǐng)求參數(shù)中獲取字符串類型的參數(shù),通過使用正則匹配檢查,把常見的可能會(huì)導(dǎo)致數(shù)據(jù)庫入侵的關(guān)鍵詞組合成正則表達(dá)式,去檢驗(yàn)請(qǐng)求參數(shù)是否存在被注入的風(fēng)險(xiǎn),即判斷請(qǐng)求參數(shù)是否合法。若判斷請(qǐng)求參數(shù)合法,即為安全的字符串參數(shù),根據(jù)該參數(shù)的實(shí)際使用類型,通過類型轉(zhuǎn)換把字符串轉(zhuǎn)換成實(shí)際使用類型,如果出現(xiàn)類型轉(zhuǎn)換失敗,則說明請(qǐng)求參數(shù)存在異常,轉(zhuǎn)入異常處理。這樣做的好處是能夠把一些通過了正則匹配但是類型上不匹配的請(qǐng)求參數(shù)進(jìn)一步排除掉。
[0023]匹配規(guī)則是根據(jù)對(duì)數(shù)據(jù)庫入侵防范標(biāo)準(zhǔn)設(shè)計(jì)的,正則匹配之前先將請(qǐng)求參數(shù)中的單引號(hào)替換為雙引號(hào)。其中,組合成正則表達(dá)式的關(guān)鍵詞包括:exec、select、update、insert、create、alter、script、js、and、or、delete、from、drop、truncate、xp_、(、)、*、%s ;、=、-、master、declare、count、like、chr、char、mid 等。
[0024](2)、把數(shù)據(jù)存儲(chǔ)操作寫成數(shù)據(jù)庫存儲(chǔ)過程。
[0025]完成參數(shù)防注入檢測之后,再把所有可能的數(shù)據(jù)存儲(chǔ)操作都寫成數(shù)據(jù)庫存儲(chǔ)過程,通過數(shù)據(jù)庫存儲(chǔ)過程來調(diào)用數(shù)據(jù)庫數(shù)據(jù)。另一方面,嚴(yán)格限制數(shù)據(jù)庫賬戶的權(quán)限,賦予每個(gè)賬戶可正常使用的最小權(quán)限外,對(duì)執(zhí)行不同數(shù)據(jù)庫操作的賬戶賦予不同的權(quán)限,以此來實(shí)現(xiàn)數(shù)據(jù)庫的操作。
[0026]例如,對(duì)于用來執(zhí)行查詢的數(shù)據(jù)庫賬戶,限制其權(quán)限。用不同的數(shù)據(jù)庫賬戶執(zhí)行查詢、插入、更新、刪除操作。隔離了不同數(shù)據(jù)庫賬戶可執(zhí)行的操作,防止了原本用于執(zhí)行SELECT命令的地方卻被用于執(zhí)行INSERT、UPDATE或DELETE等命令。
[0027]2、核心數(shù)據(jù)對(duì)象化封裝
[0028]首先把大量復(fù)雜的數(shù)據(jù)按照不同的使用功能,細(xì)分并封裝成不同的獨(dú)立功能對(duì)象,每個(gè)功能對(duì)象對(duì)應(yīng)一張數(shù)據(jù)庫表,功能對(duì)象中的屬性對(duì)應(yīng)數(shù)據(jù)庫表中的數(shù)據(jù)字段,字段在命名上使用了無意義字段標(biāo)識(shí),通過簡單字符加數(shù)字組合的命名方式,把字段含義做了隱藏。一旦數(shù)據(jù)庫遭到非法入侵,由于入侵者無法獲取到核心數(shù)據(jù)與功能對(duì)象的對(duì)應(yīng)關(guān)系,也就不能識(shí)別竊取的數(shù)據(jù)字段的真實(shí)含義,從而保護(hù)了核心數(shù)據(jù)的安全。
[0029]雖然數(shù)據(jù)庫遭到非法入侵后,入侵者可以獲得數(shù)據(jù)庫表,但數(shù)據(jù)