安全測試的概念
①安全測試是在IT軟件產品的生命周期中,特別是產品開發基本完成到發布階段,對產品進行檢驗以驗證產品符合安全需求定義和產品質量標准的過程。它一般是在產品開發基本完成到產品的發布階段才會去做的一件事情,這是一個普遍現象;但其實安全應該提前到更早,在設計階段就應該把安全考慮進去,在設計的時候就驗證產品的安全等級是什么樣子,在最終實現的過程中再去一步步檢驗安全是不是達到了設計的標准。
②安全測試屬於產品的安全需求定義書里定義的內容,也符合行業的質量標准,屬於非功能需求的檢驗范疇,有時候我們的需求文檔里可能都不體現安全,只說系統需要具備安全性,至於安全性是什么水平不明說,遵循什么樣的國際標准或者國家標准也不明說,這個就需要安全從業人員去推廣,或者通過培訓,讓公司、團隊有安全意識。慢慢把這部分內容補充進去,才有的檢驗,否則所謂的安全性就沒有一個參考標准,那也就毫無意義了。
③安全測試與普通的測試有一些區別,功能測試是保證產品能夠正常工作,輸入A可以出來A的結果,輸入B可以出來B的結果;但是安全問題是你可能輸入的是%、輸入的是*或者是“or 1=1”這種特殊的構造字符串,它能繞過程序設計邏輯,導致程序給用戶暴露了不該暴露的數據。
④我們一般認為大公司或者國外領先的公司的安全性是不錯的,但其實也不一定,就像facebook它會暴漏個人隱私。我們知道個人隱私不屬於程序設計方面的問題,但是在收集使用過程中它仍然屬於安全,這種是數據的安全,數據的使用安全跟數據的收集安全,這也是國家從去年到今年一直在嚴厲打擊的。非法收集公民個人信息,包括快遞信息,家庭住址、電話...包括身份證的正反面、手持身份證的照片等信息,收集之后就有保管、保證其安全不泄露的義務。這些都是功能測試里面所沒有的,功能測試只是保證功能可以正常運轉,上傳一張手持身份證照片,上傳完成后提示上傳成功,但是上傳成功之后,能不能被竊取到,安全測試去檢查,不是功能測試檢查的范疇。
⑤安全測試與功能測試的不同之處:
目標不同:測試以發現BUG為目標,安全測試以發現安全隱患為目標。
假設條件不同:測試假設導致問題的數據是用戶不小心造成的,接口一般只考慮用戶界面。安全測試假設導致問題的數據是攻擊者處心積慮構造的,需要考慮所有可能的攻擊途徑。
思考域不同:測試以系統所具有的功能為思考域。安全測試的思考域不但包括系統的功能,還有系統的機制、外部環境、應用與數據自身安全風險與安全屬性等。
問題發現模式不同:測試以違反功能定義為判斷依據。安全測試以違反權限與能力的約束為判斷依據。
⑥安全測試與滲透測試的差異之處:
出發點差異:滲透測試是以成功入侵系統,證明系統存在安全問題為出發點;而安全測試則是以發現系統所有可能的安全隱患為出發點。
視角差異:滲透測試是以攻擊者的角度來看待和思考問題,安全測試則是站在防護者角度思考問題,盡量發現所有可能被攻擊者利用的安全隱患,並指導其進行修復。
覆蓋性差異:滲透測試只選取幾個點作為測試的目標,而安全測試是在分析系統架構並找出系統所有可能的攻擊界面后進行的具有完備性的測試。
成本差異:安全測試需要對系統的功能、系統所采用的技術以及系統的架構等進行分析,所以較滲透測試需要投入更多的時間和人力。
解決方案差異:滲透測試無法提供有針對性的解決方案;而安全測試會站在開發者的角度分析問題的成因,提供更有效的解決方案。
⑦安全測試的方法:
模式匹配方法:將程序看作字符串
狀態機模型:將程序看作狀態機
黑盒模型:將程序看作黑盒子
白盒模型:將程序看作路徑的組合
⑧安全測試的難處:
測試理論很難適用於安全領域;
安全測試基礎理論薄弱,當前測試方法缺少理論指導,也缺乏技術產品工具 。
安全測試與滲透測試的區別
①安全測試不同於滲透測試,滲透測試側重於幾個點的穿透攻擊,而安全測試是側重於對安全威脅的建模,系統的對來自各個方面,各個層面威脅的全面考量。
②安全測試可以告訴你你的系統可能會遭受來自哪個方面的威脅,正在遭受哪些威脅,以及你的系統已經可以抵御什么樣的威脅。
③安全測試涵蓋滲透測試的部分內容,安全測試與滲透測試的區別主要在:滲透測試考慮的是以黑客方法,從單點上找到利用途徑,證明你有問題,幫助客戶提高認識,也能解決急迫的一些問題,但無法也不能去針對系統做完備性的安全測試,所以難以解決系統自身實質性的安全問題,所以提供滲透測試的廠商一般都是自己買什么防護設備,以自己防護設備針對的威脅為主要滲透點,找到你有類似的問題,解決方案就以賣對應的防護設備作為手段,針對具體的威脅,通過防護設備采取被動的防護。而安全測試,則從整體系統架構,安全編碼,安全測試,安全測試覆蓋性,安全度量等多個因素去考慮問題,提出的解決方法則是逐步引入安全開發過程,提供相應的工具支撐,目標是最后讓客戶提升業務系統自身實質性安全問題。安全測試首先會對被測試系統做系統分析,分析其架構,軟件體系以及程序部署等等,然后再對被測系統做系統安全分析,在這之后會對系統進行安全建模,明確本系統可能來自的各個潛在威脅,之后需要剖析系統,確認有哪些攻擊界面,根據測試方案進行測試。
https://www.cnblogs.com/imyalost/p/8243128.html
https://www.cnblogs.com/blogst/p/9241952.html
https://www.cnblogs.com/blogst/p/9241952.html
