兩位一體:論信息化中的應用安全和數據庫安全
黑盒測試 黑盒測試是一種把軟件產品當成是一個黑箱的測試技術,這個黑箱有入口和出口,測試過程中只需要了解黑箱的輸入和輸出結果,不需要了解黑箱里面具體是怎樣操作的。這當然很好,因為測試人員不用費神去理解軟件里面的具體構成和原理,測試人員只需要像用戶一樣看待軟件產品就行了。
例如,銀行轉賬系統提供給用戶轉賬的功能,則測試人員在使用黑盒測試方法時,不需要知道轉賬的具體實現代碼是怎樣工作的,只需要把自己當成用戶,模擬盡可能多的轉賬情況來檢查這個軟件系統能否按要求正常實現轉賬功能即可。
如果只像用戶使用和操作軟件一樣去測試軟件黑盒測試可能存在一定的風險。例如,某個安全性要求比較高的軟件系統,開發人員在設計程序時考慮到記錄系統日志的必要性,把軟件運行過程中的很多信息都記錄到了客戶端的系統日志中,甚至把客戶端連接服務器端的數據庫連接請求字符串也記錄到了系統日志中,像下面的一段字符串:
"Data Source=192.168.100.99;Initial Catalog=AccountDB;User ID=sa;PassWord=123456;
那么按照黑盒測試的觀點,這是程序內部的行為,用戶不會直接操作數據庫的連接行為,因此檢查系統日志方面的測試是不會做的。這明顯構成了一個Bug,尤其是對于安全性要求高的軟件系統,因為它暴露了后臺數據庫賬號信息。
有人把黑盒測試比喻成中醫,做黑盒測試的測試人員應該像一位老中醫一樣,通過“望、聞、問、切”的方法,來判斷程序是否“有病”。這比單純的操作黑箱的方式進了一步,這種比喻給測試人員一個啟示,不要只是簡單地看和聽,還要積極地去問,積極地去發現、搜索相關的信息。應該綜合應用中醫看病的各種“技術”和理念來達到找出軟件“病癥”的目的,具體作法如下:
“望”,觀察軟件的行為是否正常;
“聞”,檢查輸出的結果是否正確;
“問”,輸入各種信息,結合“望”、“聞”來觀察軟件的響應程度;
“切”,像中醫一樣給軟件“把脈”,敲擊一下軟件的某些“關節”。
白盒測試如果把黑盒測試比喻成中醫看病,那么白盒測試無疑就是西醫看病了。測試人員采用各種儀器和設備對軟件進行檢測,甚至把軟件擺上手術臺解剖來看個究竟。白盒測試是一種以理解軟件內部結構和程序運行方式為基礎的軟件測試技術,通常需要跟蹤一個輸入經過了哪些處理,這些處理方式是否正確。
在很多測試人員,尤其是初級測試人員看來,白盒測試是一種只有非常了解程序代碼的高級測試人員才能做的測試。熟悉代碼結構和功能實現的過程當然對測試有很大的幫助,但是從黑盒測試與白盒測試的區別可以看出,有些白盒測試是不需要測試人員懂得每一行程序代碼的。
如果把軟件看成一個黑箱,那么白盒測試的關鍵是給測試人員戴上一副X光透視眼鏡,測試人員通過這副X光透視眼鏡可以看清楚輸入到黑箱中的數據是怎樣流轉的。
一些測試工具就像醫院的檢測儀器一樣,可以幫助了解程序的內部運轉過程。例如,對于一個與SQL Server數據庫連接的軟件系統,可以簡單地把程序的作用理解為:把用戶輸入的數據通過SQL命令請求后臺數據庫,數據庫把請求的數據返回給程序的界面層展示給用戶。可以把SQL Server自帶的工具事件探查器當成是一個檢查SQL數據傳輸的精密儀器,它可以記錄軟件客戶端與服務器數據庫之間交互的一舉一動,從而讓測試人員可以洞悉軟件究竟做了哪些動作。
在測試過程中,應該綜合應用黑盒測試方法和白盒測試方法,按需要采用不同的技術組合。不要用黑盒測試方法和白盒測試方法來劃分自己屬于哪一類測試人員,一名優秀的測試人員應該懂得各種各樣的測試技術和查找Bug的手段。
最后我們談談新的防火墻問題。到目前為止,我們都是側重于預防措施。但在現實世界中,我們不可能總是改編程序和環境,所以我們必須采用其他技術措施。這就是為什么會產生新的防火墻。
防火墻用于應用程序或者監控流量的運行監控,也可以在執行運行時進行分析。防火墻可以找出攻擊,并阻止嘗試或修改的要求,來確保WEB服務器和數據庫服務器的安全運行。
目前不光有WEB應用防火墻和網絡防火墻能防范攻擊者透過應用層和網絡層的攻擊;“數據庫防火墻”也于這兩年在不斷的數據庫泄密事件中出現在公眾的視線里,國內稱之為“數據庫審計”產品,這些產品能給數據庫提供實時的網絡存儲與訪問的安全。
任何一個好的數據庫安全策略都應包括監控和審計,以確保保護對象正常運行,并且運行在正確的位置上,這也是個非常耗時的過程。由于缺乏時間和工具,大多數用戶對于數據庫配置的檢查往往也僅是抽查而已。
這里還需要指出的是目前多數人認為“數據庫審計”等同于數據庫安全,事實上,數據庫安全遠遠不是數據庫審計可以搞定的,數據庫審計只是數據庫安全的一個很小的方面,之所以有時候對等起來,一方面是由于市場宣傳導致的誤導,另一方面的確是這個部分的問題比較容易產品化/工具化,技術實現相對比較成熟。數據庫安全應該包括:數據庫資產管理、數據庫配置加固、職責分離、特權用戶控制、數據庫弱點掃描和補丁管理、數據庫加密、數據庫審計。
最后,我們還是回到應用程序的安全以及與數據庫之間的相互作用問題上。即我們必須要考慮到的問題是應用程序的安全以及與數據庫之間的相互作用,尤其是對于當今流行的高度動態的和互動的網絡應用程序而言。理解數據庫與應用程序和系統環境之間的作用可以更加提升數據的安全性。
有問題是客觀情況,其實我們需要的不是過多的責難,而是不斷改進問題本身,當我們被迫把安全做的簡單時,我們就被迫直接面對真正的問題。當我們不能用表面的裝飾交差時,我們就不得不做好真正的本質部分。希望本文可以讓讀者了解到一系列管理和風險降低方面的策略,不論你是否愿意配置數據庫防火墻、進行源代碼審記或者嚴格地控制數據庫管理系統,其目的都是相同的:做好應用安全和數據安全的兩位一體,保護好重要數據。

責任編輯:黎陽錦
-
發電電力輔助服務營銷決策模型
2019-06-24電力輔助服務營銷 -
繞過安卓SSL驗證證書的四種方式
-
網絡何以可能
2017-02-24網絡