專利名稱:數(shù)據(jù)庫系統(tǒng)的交互頁面控制裝置的制作方法
技術領域:
本發(fā)明涉及數(shù)據(jù)庫系統(tǒng)的安全技術,尤其涉及數(shù)據(jù)庫系統(tǒng)的交互頁面控制裝置。
背景技術:
隨著計算機技術的發(fā)展,攻擊數(shù)據(jù)庫系統(tǒng)的手段也越來越高明。有時,攻擊者會仔 細分析數(shù)據(jù)庫系統(tǒng)設計中的一些小細節(jié),從中發(fā)現(xiàn)系統(tǒng)存在的漏洞并發(fā)起攻擊。目前,經(jīng)常被利用的漏洞包括如下的幾種1)包含有詳細錯誤信息的錯誤頁面開發(fā)人員關注于實現(xiàn)功能,而攻擊者關注于錯誤條件。通過向數(shù)據(jù)庫系統(tǒng)輸入各 種非預期信息,攻擊者嘗試引發(fā)某些類型的錯誤行為,往往這些錯誤行為的報錯頁面中會 包含很多的詳細錯誤信息,由此攻擊者獲得更多關于數(shù)據(jù)庫系統(tǒng)的內(nèi)部工作信息,并最終 幫助他們發(fā)現(xiàn)安全漏洞。例如,ASP. NET每次出現(xiàn)未處理的錯誤時,就會生成顯示詳細錯誤信息的頁面。頁 面包括非常敏感的數(shù)據(jù)。盡管這些信息在開發(fā)過程中非常有用,但開發(fā)人員絕對不能,也不 希望在最終產(chǎn)品中把這些信息暴露給客戶端。2)腳本注入和腳本攻擊本質(zhì)上所有的腳本注入和跨站點腳本攻擊都是由輸入驗證的缺陷導致。假若驗證 所有來自非信任源的數(shù)據(jù),則所有的這些攻擊都是可預防的。
發(fā)明內(nèi)容
針對上述的問題,本發(fā)明提出一種數(shù)據(jù)庫系統(tǒng)的交互頁面控制裝置。該數(shù)據(jù)庫系統(tǒng)的交互頁面控制裝置包括交互頁面產(chǎn)生模塊和后臺處理模塊,其 中交互頁面產(chǎn)生模塊產(chǎn)生數(shù)據(jù)庫系統(tǒng)的交互頁面,交互頁面包括輸入接收頁面和輸 出響應頁面,輸入接收頁面提供輸入接口接收輸入數(shù)據(jù),輸入數(shù)據(jù)經(jīng)后臺處理模塊進行安 全驗證和處理后提供給數(shù)據(jù)庫系統(tǒng)進行處理,輸出響應頁面根據(jù)后臺處理模塊或者數(shù)據(jù)庫 系統(tǒng)處理的結果而產(chǎn)生;后臺處理模塊包括格式驗證模塊、代碼替換模塊、代碼編碼模塊和錯誤頁面產(chǎn)生 模塊,其中,格式驗證模塊驗證輸入數(shù)據(jù)的格式,對于符合格式規(guī)定的輸入數(shù)據(jù)產(chǎn)生通過信 號,對于不符合格式規(guī)定的輸入數(shù)據(jù)產(chǎn)生拒絕信號并提供給錯誤頁面產(chǎn)生模塊;代碼替換模塊掃描輸入數(shù)據(jù),將規(guī)定的代碼替換成替換符;代碼編碼模塊連接到代碼替換模塊,對經(jīng)過代碼替換模塊處理的數(shù)據(jù)數(shù)據(jù)進行代 碼編碼,將能夠執(zhí)行代碼編碼后輸入數(shù)據(jù)提供給數(shù)據(jù)庫系統(tǒng),將不能執(zhí)行代碼編碼的數(shù)據(jù) 數(shù)據(jù)提供給錯誤頁面產(chǎn)生模塊;錯誤頁面產(chǎn)生模塊連接到格式驗證模塊和代碼編碼模塊,產(chǎn)生統(tǒng)一的錯誤頁面提供給交互頁面產(chǎn)生模塊,作為輸出響應頁面。在一個實施例中,代碼替換模塊替換的規(guī)定的代碼包括“ {”、“} ”、“ [”、“] ”和“&”,替換符為空格。采用本發(fā)明的技術方案,提供統(tǒng)一的錯誤頁面,避免了在錯誤頁面中透露過多的 敏感信息,同時,通過格式驗證、代碼替換和代碼編碼,有效防止了腳本注入和腳本攻擊帶 來的威脅。
圖1揭示了根據(jù)本發(fā)明的數(shù)據(jù)庫系統(tǒng)的交互頁面控制裝置的結構圖。
具體實施例方式本發(fā)明提出了一種數(shù)據(jù)庫系統(tǒng)的交互頁面控制裝置,包括交互頁面產(chǎn)生模塊10 和后臺處理模塊20,其中交互頁面產(chǎn)生模塊10產(chǎn)生數(shù)據(jù)庫系統(tǒng)的交互頁面,交互頁面包括輸入接收頁面 和輸出響應頁面,輸入接收頁面提供輸入接口接收輸入數(shù)據(jù),輸入數(shù)據(jù)經(jīng)后臺處理模塊20 進行安全驗證和處理后提供給數(shù)據(jù)庫系統(tǒng)進行處理,輸出響應頁面根據(jù)后臺處理模塊或者 數(shù)據(jù)庫系統(tǒng)處理的結果而產(chǎn)生。比如,正常處理的輸入數(shù)據(jù)會由數(shù)據(jù)庫處理系統(tǒng)處理之后 得到處理結果,該處理的結果作為輸出響應頁面,而被拒絕的輸入數(shù)據(jù)則由后臺處理模塊 20中的錯誤頁面產(chǎn)生模塊204產(chǎn)生錯誤頁面作為輸出響應頁面。后臺處理模塊20包括格式驗證模塊201、代碼替換模塊202、代碼編碼模塊203和 錯誤頁面產(chǎn)生模塊204。格式驗證模塊201驗證輸入數(shù)據(jù)的格式,對于符合格式規(guī)定的輸入數(shù)據(jù)產(chǎn)生通過 信號,對于不符合格式規(guī)定的輸入數(shù)據(jù)產(chǎn)生拒絕信號并提供給錯誤頁面產(chǎn)生模塊204。在一 個實施例中,格式驗證模塊201實現(xiàn)如下通過正則表達式和RegularExpression Validator控件實現(xiàn)<asp:Label ID="Label4" runat="server"x/asp:Label> <asp:TextBox ID=、、TextBox3" runat="server"x/asp:TextBox><asp: RegularExpressionVaIidatorID="RegularExpressionValidatorl"runat="server" ControlToVaIidate=iTextBoxS"ErrorMessage=" 請輸入 正確的 數(shù)據(jù)" VaIidationExpr的sion=、、\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularEx. pressionValidator><asp:Label ID=、、Labell" runat="server"x/asp:Label> <asp:TextBox ID=、、TextBox5" runat="server"x/asp:TextBox> <asp:RegularExpressionVaIidator ID="RegularExpressionValidator2runat="server" ControlToValidate="TextBox5"ErrorMessage="長度不 正確"ValidationExpression="(\(\d{3}\)|\d{3}-) \d{8}"x/asp:RegularExpressionValidator>當RegularExpression Validator控件驗證用戶的輸入不符合正則表達式規(guī)定, 就會阻止用戶的輸入,并通過ErrorMessage告知用戶錯誤信息。代碼替換模塊202掃描輸入數(shù)據(jù),將規(guī)定的代碼替換成替換符。收到來自非信任 源的不恰當輸入時,并不一定要拒絕該輸入。在這種情況下,篩選輸入是最好的辦法。例如, 可以借此篩選出諸如“ {”、“}”、“ [”、“] ”和“&”這樣的一些特殊字符。要實現(xiàn)篩選輸入功 能,可以使用Mring對象的R印Iace方法。例如在一個實施例中,代碼替換模塊202實現(xiàn)如下string a = TextBox4.Text;a = a.Replace("{",""); a = a.Replace(">","");myGStudent.std_hobby = a;上面的代碼淘汰了用戶輸入中的“{”和“}”字符,改用空格代替。在替他的實施 例中,可以使用空格代替“ {”、“} ”、“ [ ”、“ ],,或者“&,,。代碼編碼模塊203連接到代碼替換模塊202,對經(jīng)過代碼替換模塊202處理的數(shù) 據(jù)數(shù)據(jù)進行代碼編碼,將能夠執(zhí)行代碼編碼后輸入數(shù)據(jù)提供給數(shù)據(jù)庫系統(tǒng),將不能執(zhí)行代 碼編碼的數(shù)據(jù)數(shù)據(jù)提供給錯誤頁面產(chǎn)生模塊204。有時,經(jīng)過格式驗證模塊201和代碼替 換模塊202處理的輸入數(shù)據(jù)可能也包含非法的字符,因為驗證不是對所有的用戶輸入都是 可行的。例如,在一個搜索字段中,用戶可以鍵入所要查找的任何內(nèi)容,包括腳本標記(例 如〈script 、腳本命令(例如alert)或HTML標記(例如<Β 。在這些情況之下就不能 總是執(zhí)行驗證模式。編碼(encoding)是控制來自用戶輸入的有害數(shù)據(jù)的有效方法,因為編 碼可以將有害字符翻譯成它們的顯示對應物。krver對象的HtmlEncode方法可以用來編 碼有害字符。編碼形成標記的字符可以防止執(zhí)行這些標記,在一個實施例中,代碼編碼模塊5203實現(xiàn)如下myGStudent. std_hobby = Server. HtmlEncode(TextBox4. Text);現(xiàn)在任何輸入TextBoM的字符都不會被執(zhí)行,而是被處理為一個不能被執(zhí)行的字符字串。錯誤頁面產(chǎn)生模塊204連接到格式驗證模塊201和代碼編碼模塊203,產(chǎn)生統(tǒng)一的 錯誤頁面提供給交互頁面產(chǎn)生模塊10,作為輸出響應頁面。使用統(tǒng)一的錯誤頁面替代原來 詳細的錯誤信息列表,可以避免通過錯誤頁面暴露系統(tǒng)內(nèi)部設計的缺陷。在一個實施例中, 統(tǒng)一的錯誤頁面實現(xiàn)如下創(chuàng)建Global, asax文件,在Application_Error ()函數(shù)中添加需要的代碼,如下void Application—Error(object sender, EventArgs e) {Exception objErr = Server.GetLastError().GetBaseException(); Server. CIearErrorO;Applicationrerror"]=“頁面中有錯誤,請與管理員聯(lián)系"; Response. Redirect("~/error.aspx");}代碼Response. Redirect (〃 /error, aspx")指定了系統(tǒng)出現(xiàn)未處理的錯誤時 將會跳轉(zhuǎn)到指定頁面“error, aspx”。創(chuàng)建自定義錯誤頁“error, aspx”,在頁面中顯示錯誤信息。protected void Page—Load (object sender, EventArgs e) {La bell.Text = Application["error"]-ToString();>實現(xiàn)過程并不復雜。現(xiàn)在當系統(tǒng)出現(xiàn)未處理的錯誤時,就會調(diào)用指定頁“error, aspx"顯示給用戶。這樣系統(tǒng)就能避免遭到惡意錯誤信息的攻擊。采用本發(fā)明的技術方案,提供統(tǒng)一的錯誤頁面,避免了在錯誤頁面中透露過多的 敏感信息,同時,通過格式驗證、代碼替換和代碼編碼,有效防止了腳本注入和腳本攻擊帶 來的威脅。
權利要求
1.一種數(shù)據(jù)庫系統(tǒng)的交互頁面控制裝置,其特征在于,包括交互頁面產(chǎn)生模塊和后臺 處理模塊,其中交互頁面產(chǎn)生模塊產(chǎn)生數(shù)據(jù)庫系統(tǒng)的交互頁面,所述交互頁面包括輸入接收頁面和輸 出響應頁面,所述輸入接收頁面提供輸入接口接收輸入數(shù)據(jù),所述輸入數(shù)據(jù)經(jīng)后臺處理模 塊進行安全驗證和處理后提供給數(shù)據(jù)庫系統(tǒng)進行處理,所述輸出響應頁面根據(jù)后臺處理模 塊或者數(shù)據(jù)庫系統(tǒng)處理的結果而產(chǎn)生;后臺處理模塊包括格式驗證模塊、代碼替換模塊、代碼編碼模塊和錯誤頁面產(chǎn)生模塊, 其中,格式驗證模塊驗證所述輸入數(shù)據(jù)的格式,對于符合格式規(guī)定的輸入數(shù)據(jù)產(chǎn)生通過信 號,對于不符合格式規(guī)定的輸入數(shù)據(jù)產(chǎn)生拒絕信號并提供給錯誤頁面產(chǎn)生模塊; 代碼替換模塊掃描所述輸入數(shù)據(jù),將規(guī)定的代碼替換成替換符; 代碼編碼模塊連接到代碼替換模塊,對經(jīng)過代碼替換模塊處理的數(shù)據(jù)數(shù)據(jù)進行代碼編 碼,將能夠執(zhí)行代碼編碼后輸入數(shù)據(jù)提供給所述數(shù)據(jù)庫系統(tǒng),將不能執(zhí)行代碼編碼的數(shù)據(jù) 數(shù)據(jù)提供給錯誤頁面產(chǎn)生模塊;錯誤頁面產(chǎn)生模塊連接到格式驗證模塊和代碼編碼模塊,產(chǎn)生統(tǒng)一的錯誤頁面提供給 交互頁面產(chǎn)生模塊,作為輸出響應頁面。
2.如權利要求1所述的數(shù)據(jù)庫系統(tǒng)的交互頁面控制裝置,其特征在于,所述代碼替換模塊替換的規(guī)定的代碼包括“ {”、“} ”、“ [”、“] ”和“&”,替換符為空格。
全文摘要
本發(fā)明提出一種數(shù)據(jù)庫系統(tǒng)的交互頁面控制裝置,包括交互頁面產(chǎn)生模塊和后臺處理模塊,其中交互頁面產(chǎn)生模塊產(chǎn)生數(shù)據(jù)庫系統(tǒng)的交互頁面,交互頁面包括輸入接收頁面和輸出響應頁面;后臺處理模塊包括格式驗證模塊、代碼替換模塊、代碼編碼模塊和錯誤頁面產(chǎn)生模塊,其中,格式驗證模塊驗證輸入數(shù)據(jù)的格式,對于不符合格式規(guī)定的輸入數(shù)據(jù)產(chǎn)生拒絕信號并提供給錯誤頁面產(chǎn)生模塊;代碼替換模塊掃描輸入數(shù)據(jù),將規(guī)定的代碼替換成替換符;代碼編碼模塊連接到代碼替換模塊,對經(jīng)過代碼替換模塊處理的數(shù)據(jù)數(shù)據(jù)進行代碼編碼,將不能執(zhí)行代碼編碼的數(shù)據(jù)數(shù)據(jù)提供給錯誤頁面產(chǎn)生模塊;錯誤頁面產(chǎn)生模塊產(chǎn)生統(tǒng)一的錯誤頁面作為輸出響應頁面。
文檔編號G06F3/048GK102054133SQ200910197758
公開日2011年5月11日 申請日期2009年10月27日 優(yōu)先權日2009年10月27日
發(fā)明者沙潔, 錢立 申請人:上海杉達學院