發布時間:2020-08-04
現在的軟件系統越來越多,這個行業的發展是非常快速的,代碼的數量越來越多,系統的復雜程度也是在快速的增長。而且軟件開發的編程語言也從使用單一的語言發展為多種語言協同開發。這樣使測試的難度也在逐漸的增高。今天我們就先來簡單的了解一下靜態代碼分析和代碼審計。
靜態代碼分析是指在不實際執行程序的情況下,對代碼語義和行為進行分析,由此找出程序中由于錯誤的編碼導致異常的程序語義或未定義的行為。通俗的說,靜態代碼分析就是在代碼編寫的同時就能找出代碼的編碼錯誤。你不需要等待所有代碼編寫完畢,也不需要構建運行環境,編寫測試用例。它能在軟件開發流程早期就發現代碼中的各種問題,從而提高開發效率和軟件質量。
代碼審計
代碼審計(Code audit)就是檢查源代碼中的安全缺陷,檢查程序源代碼是否存在安全隱患,或者有編碼不規范的地方,通過自動化工具或者人工審查的方式,對程序源代碼逐條進行檢查和分析,發現這些源代碼缺陷引發的安全漏洞,并提供代碼修訂措施和建議。
代碼審計是一種以發現程序錯誤,安全漏洞和違反程序規范為目標的源代碼分析。軟件代碼審計是對編程項目中源代碼的全面分析,旨在發現錯誤,安全漏洞或違反編程約定。 它是防御性編程范例的一個組成部分,它試圖在軟件發布之前減少錯誤。
通過閱讀一份源碼,對其進行各類漏洞挖掘,這樣的過程便統稱為審計。在審計中,你不但需要知道各類漏洞的原理,還需要良好的審計環境。在面對大型開源程序時,信息量往往十分巨大,所以工具的分析和檢索是必不可少的。
隨著PHP被廣泛使用,PHP的安全問題越來越被關注。而最常見的搭配就是PHP+MySQL,接下來我們探討一下PHP審計中MySQL注入的挖掘。
1、注入的原理
顧名思義,SQL注入就是通過把SQL命令插入到Web表單提交、輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令的目的。SQL注入是當今網絡上最普遍的一種攻擊方法。
2、常見的注入
在審計中,最常出現的注入便是GET注入、POST注入和Cookie注入。而POST注入也是最容易被忽略的,有時可能因為傳遞的參數較多,常常忽略某個參數的過濾,從而導致了注入。在實際開發中,往往有的開發人員使用了REQUEST傳參,卻只對GET進行了過濾,因此可以換一種方式提交數據進行注入
3、http頭注入
http客戶程序向服務器發送請求的時候必須指明請求類型,從而產生了http頭。常見的http頭如下所述。
Host:初始URL中的主機和端口。
Referer:包含一個URL,用戶從該URL代表的頁面出發訪問當前請求的頁面。
User-Agent:瀏覽器類型。
Accept:瀏覽器可接收的MIME類型。
Accept-Language:瀏覽器所希望的語言種類。
Connection:表示是否需要持久連接。
Content-Length:表示請求消息正文的長度。
Cookie:這是最重要的請求頭信息之一。
4、二次注入
隨著安全問題日趨被重視,一些簡單的SQL注入在大中型開源程序中已基本銷聲匿跡了。而出現更多的則是二次注入,相對于一次注入漏洞而言,二次注入漏洞更難以被發現,但是它卻具有與一次注入攻擊漏洞相同的攻擊威力。
關于靜態代碼分析和代碼審計的一些內容就是這樣了,在本文的最后,小編給大家推薦一個簡單又好用的代碼審計工具,CodeAnalyzer(簡稱CA)是一個專業代碼質量管理的代碼審查軟件,用于實現靜態分析、代碼走查、代碼規范檢查以及代碼潛在錯誤分析的白盒測試工具,它是一種脫離編譯器的代碼靜態分析軟件產品。
推薦閱讀:
您的信息已成功提交!
我們的客服人員稍后會與您聯系