今天梯皿,很多軟件并沒有經(jīng)過專門的安全測(cè)試便運(yùn)行在互聯(lián)網(wǎng)上邮辽,它們攜帶著各類安全漏洞直接暴露在公眾面前,其中一些漏洞甚至直指軟件所承載的核心敏感信息或業(yè)務(wù)邏輯。這些漏洞一旦被不懷好意者利用斟薇,很可能會(huì)給企業(yè)造成經(jīng)濟(jì)損失萄金,帶來負(fù)面聲譽(yù)影響的同時(shí)预愤,還可能被起訴遭到罰款等等钾虐,細(xì)思極恐。其中的一部分原因是企業(yè)本身安全意識(shí)不強(qiáng)吏廉,但是很多時(shí)候雖然軟件企業(yè)已經(jīng)開始意識(shí)到這些問題蠢络,卻苦于缺少專業(yè)的安全測(cè)試人員,他們不得不冒著極大的風(fēng)險(xiǎn)先上線賭一把運(yùn)氣再說迟蜜。
既然如此刹孔,我們測(cè)試人員作為質(zhì)量代言人怎能對(duì)此置之不理呢?
你也許會(huì)抱怨,安全測(cè)試水太深了髓霞,不知道從何下手卦睹。
安全測(cè)試并不遙遠(yuǎn)
? ? ? ? ? ? ? ? ? ? ? ? ? 是的,安全測(cè)試在軟件測(cè)試?yán)锩媸且粋€(gè)很特別的科目(或作“工種”)方库,每次一碰到這個(gè)科目结序,很多人都覺得這個(gè)科目應(yīng)該全權(quán)交給神秘的安全測(cè)試人員來管。這一個(gè)觀念導(dǎo)致很多測(cè)試人員徘徊在安全測(cè)試的門口卻遲遲不進(jìn)去纵潦,包括我自己徐鹤。
? ? ? ? ? ? ? ? ? ? ? ? ? 直到后來,我非常有幸能夠在不同規(guī)模的軟件開發(fā)項(xiàng)目上跟“神秘的安全測(cè)試人員”學(xué)習(xí)如何進(jìn)行安全測(cè)試邀层,發(fā)現(xiàn)“神秘的安全測(cè)試人員”不光是名字跟我們一樣都有“測(cè)試”二字返敬,所做的事情在本質(zhì)上也是跟我們測(cè)試人員有很多相通。
? ? ? ? ? ? ? ? ? ? ? ? ? 想想看我們都做過什么:
我們修改過url的參數(shù)寥院,對(duì)不對(duì)劲赠?他們也是!
? ? ? ? ? ? ? ? ? ? ? ? ? 我們?cè)跀?shù)據(jù)輸入處提供過不合法的數(shù)據(jù)秸谢,對(duì)不對(duì)凛澎?他們也是!
? ? ? ? ? ? ? ? ? ? ? ? ? 我們嘗試過修改只讀數(shù)據(jù)估蹄,對(duì)不對(duì)塑煎?他們也是!
? ? ? ? ? ? ? ? ? ? ? ? ? 我們也測(cè)過用戶會(huì)話是否如期timeout臭蚁,對(duì)不對(duì)最铁?他們也是!
Ok刊棕,這還不是全部。知道嗎待逞?他們也做測(cè)試計(jì)劃甥角、測(cè)試用例設(shè)計(jì)、bug分析與管理等等识樱。所以嗤无,安全測(cè)試離我們并沒有那么遙遠(yuǎn)。
? ? ? ? ? ? ? ? ? ? ? ? ? 當(dāng)然怜庸,我必須承認(rèn)当犯,安全測(cè)試是非常復(fù)雜的。一個(gè)專業(yè)的安全測(cè)試專家在某種程度上來說是一個(gè)全棧工程師割疾。所以嚎卫,想要在安全測(cè)試上一夜成才不太容易。不過好消息是宏榕,作為測(cè)試人員的我們卻有得天獨(dú)厚的優(yōu)勢(shì)拓诸,使我們能夠在安全測(cè)試上快速起步侵佃,幫助團(tuán)隊(duì)盡快展開預(yù)防并檢測(cè)安全漏洞的工作。
? ? ? ? ? ? ? ? ? ? ? ? ? 在這里我想要跟大家分享一下在敏捷開發(fā)團(tuán)隊(duì)中如何利用我們的測(cè)試經(jīng)驗(yàn)開展安全測(cè)試奠支。
安全測(cè)試和普通測(cè)試的相似性
? ? ? ? ? ? ? ? ? ? ? ? ? 首先馋辈,讓我們先來了解什么是安全測(cè)試,我們作為測(cè)試人員有什么可以直接用上的技能和經(jīng)驗(yàn)倍谜。
? ? ? ? ? ? ? ? ? ? ? ? ? 簡(jiǎn)單來說迈螟,安全測(cè)試其實(shí)就是一個(gè)發(fā)現(xiàn)軟件安全漏洞的過程,旨在保護(hù)軟件系統(tǒng)的數(shù)據(jù)與功能尔崔。它跟常規(guī)測(cè)試相似的地方至少有以下幾點(diǎn):
1. 目標(biāo)類似
不管是常規(guī)測(cè)試還是安全測(cè)試答毫,都有一個(gè)原則:預(yù)防勝于檢測(cè)。這個(gè)比較容易理解您旁,不管是常規(guī)測(cè)試的缺陷也好烙常,還是安全測(cè)試的漏洞也好,如果能預(yù)防使它不發(fā)生鹤盒,就省了后期的修復(fù)與驗(yàn)證工作蚕脏。如果不能成功的預(yù)防缺陷,能早一些發(fā)現(xiàn)的話侦锯,肯定比晚發(fā)現(xiàn)的修復(fù)的成本低驼鞭。
2. 在軟件生命周期中的過程類似
以敏捷開發(fā)團(tuán)隊(duì)為例,常規(guī)測(cè)試人員在各個(gè)階段的事情尺碰,安全測(cè)試人員也要做:
了解業(yè)務(wù)的需求挣棕,以避免混亂的測(cè)試優(yōu)先級(jí);
? ? ? ? ? ? ? ? ? ? ? ? ? 針對(duì)業(yè)務(wù)與系統(tǒng)功能設(shè)計(jì)用例:常規(guī)測(cè)試需要關(guān)注系統(tǒng)功能亲桥,安全測(cè)試同樣也不能脫離系統(tǒng)功能洛心;
? ? ? ? ? ? ? ? ? ? ? ? ? 與其他角色一起啟動(dòng)需求的開發(fā):溝通測(cè)試用例,避免因?yàn)闇贤ú蛔阍斐煞倒ぃ?/p>
? ? ? ? ? ? ? ? ? ? ? ? ? 與其他角色一起在開發(fā)環(huán)境驗(yàn)收需求:盡早提供反饋题篷,發(fā)現(xiàn)缺陷了開發(fā)可以馬上修正
? ? ? ? ? ? ? ? ? ? ? ? ? 在測(cè)試環(huán)境進(jìn)行全面測(cè)試:針對(duì)端到端的場(chǎng)景進(jìn)行測(cè)試词身,盡可能把第三方系統(tǒng)(如果有的話)也包括進(jìn)來;
? ? ? ? ? ? ? ? ? ? ? ? ? 分析并總結(jié)測(cè)試結(jié)果:整理問題清單法严,排列優(yōu)先級(jí);
? ? ? ? ? ? ? ? ? ? ? ? ? 反饋測(cè)試結(jié)果:把測(cè)試結(jié)果反饋給團(tuán)隊(duì)等干系人葫笼。
3. 測(cè)試用例很多重合
在面向終端用戶的測(cè)試場(chǎng)景上深啤,常規(guī)測(cè)試的用例與安全測(cè)試的用例是非常類似的。比如對(duì)于登錄系統(tǒng)的功能路星,不管是常規(guī)測(cè)試還是安全測(cè)試溯街,我們都會(huì)測(cè)試用戶輸入正確的用戶名是否可以登錄,輸入錯(cuò)誤的用戶名或密碼是否系統(tǒng)會(huì)如何反應(yīng)。
? ? ? ? ? ? ? ? ? ? ? ? ? 比如我曾經(jīng)工作的一個(gè)搜集報(bào)稅人信息的系統(tǒng)苫幢,不管是常規(guī)測(cè)試還是安全測(cè)試访诱,常規(guī)測(cè)試會(huì)測(cè)試系統(tǒng)的登錄,系統(tǒng)信息的錄入與編輯韩肝,文件的上傳等等触菜,安全測(cè)試也會(huì)測(cè)試這些業(yè)務(wù)場(chǎng)景。
? ? ? ? ? ? ? ? ? ? ? ? ? 因?yàn)樵诿恳粋€(gè)終端用戶可以操作的場(chǎng)景上哀峻,都可能會(huì)有安全漏洞存在涡相。所以,有了常規(guī)測(cè)試的經(jīng)驗(yàn)剩蟀,我們就相當(dāng)于有了不少安全測(cè)試用例的儲(chǔ)備催蝗。
4. 都需要有探索的過程
測(cè)試是一個(gè)了解軟件系統(tǒng)是否完成我們預(yù)期的過程,也是探索系統(tǒng)還有哪些我們沒有預(yù)期的行為的過程育特。安全測(cè)試的過程需要把探索的目標(biāo)轉(zhuǎn)向安全漏洞丙号。當(dāng)我們這么做時(shí),我們同樣會(huì)得到很多探索的樂趣缰冤。
5. 都要有測(cè)試人員必備的“懷疑態(tài)度”
相信咱們測(cè)試人員都非常熟悉一個(gè)場(chǎng)景--開發(fā)人員說:“我只做了一個(gè)很小的代碼改動(dòng)犬缨。”然后我們帶著友好而警惕的態(tài)度棉浸,發(fā)現(xiàn)這個(gè)“很小的改動(dòng)”引發(fā)了很大的問題怀薛。不管是在安全測(cè)試還是非安全測(cè)試,這個(gè)警惕性是我們都需要保持的良好傳統(tǒng)迷郑。
? ? ? ? ? ? ? ? ? ? ? ? ? 那么枝恋,有了這么多類似的地方,還缺什么呢嗡害?如果想要做專家焚碌,還差很多。但是如果想馬上安全測(cè)試上起步霸妹,我們可以先做下面的改變十电。
安全測(cè)試的三步曲
? ? ? ? ? ? ? ? ? ? ? ? ? 第一,轉(zhuǎn)換視角
在我看來抑堡,不管是帶著全棧的經(jīng)驗(yàn)摆出,還是只有部分技術(shù)知識(shí)朗徊,想要做好安全測(cè)試必須先轉(zhuǎn)換我們觀察軟件的視角首妖。舉個(gè)例子,讓我們看看下這幅畫:
同樣一幅畫爷恳,有人一眼看過去看到的是兩個(gè)人臉有缆,而有人看到的是一個(gè)花瓶。這就是觀察的視角不同造成的。
? ? ? ? ? ? ? ? ? ? ? ? ? 在我剛開始接觸安全測(cè)試時(shí)就很深的體會(huì)到了這一點(diǎn)棚壁。當(dāng)時(shí)我在測(cè)試一個(gè)Web應(yīng)用的用戶登錄功能杯矩。當(dāng)我輸入錯(cuò)誤的用戶名來試著登陸時(shí),瀏覽器上的提示信息為“該用戶名不存在”袖外。當(dāng)我嘗試正確的用戶名而錯(cuò)誤的密碼時(shí)史隆,提示信息變成“密碼輸入錯(cuò)誤÷椋”對(duì)于這個(gè)清晰的錯(cuò)誤提示我非常滿意泌射。試想我若是一個(gè)真實(shí)的終端用戶,這個(gè)信息有效的幫助我縮小我所要糾錯(cuò)的范圍鬓照,提高效率熔酷,非常好。
? ? ? ? ? ? ? ? ? ? ? ? ? 可是豺裆,就在我身邊坐著的安全測(cè)試人員馬上跳了出來:“這個(gè)提示信息需要改拒秘!敏感信息暴露了!”看著我一臉茫然臭猜,這位安全測(cè)試人員告訴我躺酒,通過我們的提示信息,惡意的系統(tǒng)使用者可以推測(cè)出哪些用戶名已經(jīng)存在于系統(tǒng)中获讳,然后利用這些用戶名可以再進(jìn)行密碼的暴力破解阴颖,縮小破解的范圍。所以丐膝,這個(gè)信息雖然為合法用戶提供了便利量愧,也為不懷好意的系統(tǒng)使用者提供了? ? ? ? ? ? ? ? ? ? ? ? ? 便利。而往往這種便利為惡意的系統(tǒng)使用者帶來的好處遠(yuǎn)大于給合法用戶帶來的好處帅矗。
? ? ? ? ? ? ? ? ? ? ? ? ? 這個(gè)經(jīng)歷讓我受震動(dòng)的同時(shí)偎肃,也意識(shí)到以前可能很多安全漏洞已經(jīng)擺在我的面前,我卻沒有看出來浑此,因?yàn)槲野阉鼈冞^濾了累颂。事實(shí)證明,在后來經(jīng)歷的不同項(xiàng)目中凛俱,而當(dāng)我轉(zhuǎn)換了視角紊馏,有些安全漏洞不需要我去找,而是自己跑到我眼前來的蒲犬。真是得來全不費(fèi)功夫朱监。
第二,改變測(cè)試中模擬的對(duì)象
為了能以不同的視角來觀察軟件原叮,我們必須改變我們所模擬的對(duì)象赫编。這也是一個(gè)讓我們刻意練習(xí)轉(zhuǎn)換視角的有效方法巡蘸。
? ? ? ? ? ? ? ? ? ? ? ? ? 我們?cè)谧龇前踩珳y(cè)試的時(shí)候通常把自己想象成一個(gè)合法用戶,然后開始驗(yàn)證系統(tǒng)是否能完成預(yù)設(shè)的目標(biāo)擂送。比如對(duì)于一個(gè)網(wǎng)上商城悦荒,我們會(huì)驗(yàn)證系統(tǒng)是否能讓用戶完成商品的瀏覽與購(gòu)買,我們也會(huì)測(cè)試一些異常的行為嘹吨,比如購(gòu)買的商品數(shù)量不是數(shù)字而是一串無意義的字母時(shí)搬味,目的是看系統(tǒng)是否能比較優(yōu)雅的做出回應(yīng)。我們這么測(cè)試的目的往往是為了確保用戶誤操作以后還能夠繼續(xù)他們的購(gòu)買蟀拷,或者說不要給系統(tǒng)造成什么嚴(yán)重的傷害身腻。
? ? ? ? ? ? ? ? ? ? ? ? ? 如果要做安全測(cè)試,我們則必須去模擬系統(tǒng)的另一類使用者-惡意用戶匹厘。他們的目的是為了尋找系統(tǒng)中可鉆的漏洞嘀趟。比如同樣是一個(gè)網(wǎng)上商城,惡意用戶的目標(biāo)之一就是要想辦法以較少的錢愈诚,甚至不付錢就能拿到商品她按。所以,如果惡意用戶進(jìn)行了“誤操作”炕柔,他們不會(huì)停留在“誤操作”酌泰,而是通過“誤操作”來看系統(tǒng)是否給自己提供更多的線索。
? ? ? ? ? ? ? ? ? ? ? ? ? 所以匕累,我們轉(zhuǎn)換我們測(cè)試時(shí)所模擬的對(duì)象陵刹,把思維從一個(gè)合法用戶的視角中拉出來,轉(zhuǎn)換成一個(gè)惡意用戶欢嘿。這需要一點(diǎn)時(shí)間衰琐,就如同之前看到的畫,如果我們一開始看到的是人臉炼蹦,要想下一次第一眼看到的是花瓶羡宙,我們需要時(shí)間來刻意練習(xí)。
第三掐隐,使用專用的測(cè)試工具
有了思維的轉(zhuǎn)換狗热,我們可以加入新的測(cè)試想法。但是虑省,在具體做安全測(cè)試的時(shí)候我們會(huì)發(fā)現(xiàn)并不是那么容易去模擬惡意用戶的行為匿刮。畢竟系統(tǒng)的前端會(huì)給我們很多的屏障。而且惡意用戶可不總都是從系統(tǒng)前門進(jìn)去的探颈。這時(shí)候熟丸,使用一些工具,比如OWASP? ? ? ? ? ? ? ? ? ? ? ? ? Zap(https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project)膝擂、Burp(https://portswigger.net/burp/)等是非常有幫助的虑啤。我們可以在系統(tǒng)界面上執(zhí)行功能測(cè)試的用例,用這些工具來獲取http請(qǐng)求架馋,篡改后發(fā)送給后臺(tái)服務(wù)器狞山。有了這些實(shí)用又比較容易上手的工具,我們就可以執(zhí)行很多惡意用戶的操作場(chǎng)景了叉寂。
? ? ? ? ? ? ? ? ? ? ? ? ? 能做到這三點(diǎn)萍启,起步就基本夠用了。
舉個(gè)例子吧
? ? ? ? ? ? ? ? ? ? ? ? ? 下面讓我們以網(wǎng)上商城的買家在商品評(píng)價(jià)中上傳圖片這個(gè)功能來講講如何實(shí)踐這“三板斧”屏鳍。假設(shè)我們從項(xiàng)目初期就加入了勘纯,那么我們大致有七件事情要做:
識(shí)別系統(tǒng)中有價(jià)值的數(shù)據(jù);
? ? ? ? ? ? ? ? ? ? ? ? ? 在需求分析階段加入惡意用戶需求钓瞭;
? ? ? ? ? ? ? ? ? ? ? ? ? 針對(duì)惡意用戶需求設(shè)計(jì)測(cè)試用例驳遵;
? ? ? ? ? ? ? ? ? ? ? ? ? 參與啟動(dòng)惡意需求的開發(fā);
? ? ? ? ? ? ? ? ? ? ? ? ? 在開發(fā)環(huán)境驗(yàn)收惡意需求的實(shí)現(xiàn)山涡;
? ? ? ? ? ? ? ? ? ? ? ? ? 在測(cè)試環(huán)境中進(jìn)行安全測(cè)試堤结;
? ? ? ? ? ? ? ? ? ? ? ? ? 向團(tuán)隊(duì)反饋所發(fā)現(xiàn)的安全漏洞。
? ? ? ? ? ? ? ? ? ? ? ? ? 不要擔(dān)心鸭丛,這不是7個(gè)全新的事情竞穷。這只是在每個(gè)需要測(cè)試人員出現(xiàn)的地方增加了安全的工作而已。
1. 識(shí)別系統(tǒng)中有價(jià)值的數(shù)據(jù)
很多人認(rèn)為執(zhí)行測(cè)試才是測(cè)試鳞溉,而我們的安全測(cè)試從這里就開始了瘾带。
? ? ? ? ? ? ? ? ? ? ? ? ? 了解了業(yè)務(wù)以后,我們需要考慮系統(tǒng)中會(huì)有什么有價(jià)值的數(shù)據(jù)熟菲。這是為下一步加入惡意用戶需求做準(zhǔn)備看政。對(duì)于一個(gè)網(wǎng)上商城,有價(jià)值的數(shù)據(jù)可以包括產(chǎn)品信息抄罕、訂單信息帽衙、用戶信息、支付贞绵,等等厉萝。
? ? ? ? ? ? ? ? ? ? ? ? ? 這個(gè)環(huán)節(jié)對(duì)我們測(cè)試人員來說并沒有太多額外的工作,畢竟我們做非安全測(cè)試的時(shí)候也是需要了解業(yè)務(wù)榨崩。不過要注意了谴垫,我們要測(cè)試的“圖片上傳功能”是一個(gè)涉及有價(jià)值數(shù)據(jù)的功能。我們需要提高警惕了母蛛。
軟件測(cè)試學(xué)習(xí)交流群:747981058
2. 在需求階段加入惡意用戶需求
惡意用戶需求是用來記錄惡意用戶想要在系統(tǒng)中達(dá)到的目的翩剪。與普通用戶需求的區(qū)別是,我們不是要去實(shí)現(xiàn)它彩郊,而是使用它幫來助我們遠(yuǎn)離對(duì)系統(tǒng)使用者“不恰當(dāng)?shù)男湃巍鼻巴洹MǔN覀冃枰槍?duì)每一個(gè)合法用戶需求來增加一個(gè)或多個(gè)相對(duì)應(yīng)的惡意用戶需求蚪缀。
? ? ? ? ? ? ? ? ? ? ? ? ? 舉個(gè)例子,如果我們這個(gè)“圖片上傳功能”的合法用戶需求為:
? ? ? ? ? ? ? ? ? ? ? ? ? 作為一個(gè)買家恕出,我想在對(duì)商品進(jìn)行評(píng)價(jià)的時(shí)候上傳圖片作為買家秀询枚,以便于參加返現(xiàn)營(yíng)銷活動(dòng)。
? ? ? ? ? ? ? ? ? ? ? ? ? 那么對(duì)應(yīng)的惡意用戶需求可以是:
? ? ? ? ? ? ? ? ? ? ? ? ? 作為一個(gè)惡意用戶浙巫,我想破壞買家秀返現(xiàn)活動(dòng)金蜀,以便破壞商城的營(yíng)銷活動(dòng)。
“破壞買家秀返現(xiàn)活動(dòng)”是一個(gè)大的目標(biāo)的畴。為了設(shè)計(jì)用例方便渊抄,它可以被細(xì)分為一系列小目標(biāo)。比如:
讓用戶無法上傳圖片
? ? ? ? ? ? ? ? ? ? ? ? ? 讓頁(yè)面無法正確顯示圖片
? ? ? ? ? ? ? ? ? ? ? ? ? 等等
? ? ? ? ? ? ? ? ? ? ? ? ? 有了惡意用戶需求的主干信息丧裁,我們就可以開始下一步設(shè)計(jì)安全測(cè)試用例了护桦。
3. 針對(duì)“惡意用戶需求”設(shè)計(jì)測(cè)試用例
現(xiàn)在我們需要做的是努力把自己限制在“惡意用戶”的角度做頭腦風(fēng)暴:“到底有什么方法可以使買家無法上傳圖片信息呢?”煎娇,? ? ? ? ? ? ? ? ? ? ? ? ? ? “讓頁(yè)面無法正確顯示買家秀圖片又怎么做到嘶炭?”嗯,也許最直接的辦法就是讓服務(wù)器所在的機(jī)房斷電逊桦、斷網(wǎng)之類的眨猎。這是些不錯(cuò)的想法,雖然執(zhí)行難度有點(diǎn)大强经。沒關(guān)系睡陪,記錄下來。除此之外匿情,我們還可以有其他測(cè)試用例兰迫,比如:
使存儲(chǔ)圖片的磁盤空間被占滿而無法接受新的圖片;
? ? ? ? ? ? ? ? ? ? ? ? ? 使處理上傳圖片的進(jìn)程繁忙而無法接受新的上傳任務(wù)炬称;
? ? ? ? ? ? ? ? ? ? ? ? ? 上傳特別大的圖片使用戶的客戶端需要很長(zhǎng)時(shí)間才能下載完
? ? ? ? ? ? ? ? ? ? ? ? ? 上傳偽裝成圖片的惡意代碼汁果,進(jìn)一步獲取服務(wù)器權(quán)限,刪除所有的買家秀圖片玲躯;
等等
? ? ? ? ? ? ? ? ? ? ? ? ? 如果這個(gè)時(shí)候想到新的測(cè)試用例也同樣記錄下來据德,比如“我想不購(gòu)買也上傳買家秀圖片以獲得返現(xiàn)”之類的。
? ? ? ? ? ? ? ? ? ? ? ? ? 不用太擔(dān)心這個(gè)階段的測(cè)試用例過于“瘋狂”或者不夠完整跷车,畢竟我們對(duì)于系統(tǒng)的實(shí)現(xiàn)還不是很了解棘利。我們會(huì)在接下來的環(huán)節(jié)中完善具體的步驟。
4. 參與啟動(dòng)惡意需求的開發(fā)(evil story kickoff)
在開發(fā)人員開始開發(fā)合法用戶需求之前朽缴,我們需要跟業(yè)務(wù)分析人員善玫、開發(fā)人員一起溝通需求的內(nèi)容。在敏捷軟件開發(fā)項(xiàng)目中我們叫它story? ? ? ? ? ? ? ? ? ? ? ? ? kickoff密强,即用戶故事啟動(dòng)茅郎。當(dāng)有了對(duì)應(yīng)的惡意用戶需求時(shí)蜗元,我們必然也要把它也加到啟動(dòng)的范圍里。目的是把我們頭腦風(fēng)暴出來的測(cè)試用例跟所有的角色來溝通系冗。預(yù)防勝于檢測(cè)奕扣。
5. 在開發(fā)環(huán)境驗(yàn)收惡意需求的實(shí)現(xiàn)
100%預(yù)防軟件的缺陷與漏洞是不太可能的,所以這個(gè)環(huán)節(jié)的存在是為了提早反饋毕谴。
? ? ? ? ? ? ? ? ? ? ? ? ? 我曾經(jīng)經(jīng)歷過一個(gè)項(xiàng)目,都快上線了才決定做安全測(cè)試距芬,結(jié)果測(cè)出來的問題之一是用戶會(huì)話(user session)不能正確過期的問題涝开,經(jīng)過一番研究,發(fā)現(xiàn)需要對(duì)系統(tǒng)設(shè)計(jì)的架構(gòu)進(jìn)行比較大的修改框仔,只能做個(gè)臨時(shí)的修復(fù)讓系統(tǒng)先上線舀武,然后再把系統(tǒng)的架構(gòu)給改了,重寫這部分功能离斩,重新測(cè)試银舱。代價(jià)非常高。所以不管是安全測(cè)試還是非安全測(cè)試跛梗,”在開發(fā)環(huán)境驗(yàn)收惡意需求的實(shí)現(xiàn)“這個(gè)步驟都不能缺少寻馏。
? ? ? ? ? ? ? ? ? ? ? ? ? 而這個(gè)環(huán)節(jié)存在的第二個(gè)目的是讓我們可以從開發(fā)人員那里得到支持-具體實(shí)施的細(xì)節(jié),幫助我們完善具體的測(cè)試用例核偿。比如在這個(gè)時(shí)間點(diǎn)我們?nèi)魪拈_發(fā)人員那里得知系統(tǒng)的后臺(tái)沒有對(duì)圖片上傳者做身份驗(yàn)證诚欠,我們就可以至少增加一個(gè)測(cè)試的用例:“惡意用戶以其他用戶的身份上傳一個(gè)風(fēng)馬牛不相及的圖片”。有時(shí)候錯(cuò)誤的圖片比沒有圖片更具有殺傷力漾岳。
6. 在測(cè)試環(huán)境中進(jìn)行安全測(cè)試
終于到了運(yùn)行測(cè)試的階段轰绵。可能這個(gè)時(shí)候我們之前想到的測(cè)試用例已經(jīng)被開發(fā)人員給解決尼荆。如果是這樣那就太好了左腔。但是,事實(shí)并非有這么美好捅儒。第一液样,可能這些用例只是在開發(fā)環(huán)境上成功通過了,但是在理想的測(cè)試環(huán)境里巧还,也就是類產(chǎn)品環(huán)境里蓄愁,這些用例可能并不能完全通過;第二狞悲,肯定還有其他需要探索的地方撮抓。這時(shí)我們就可以用OWASP? ? ? ? ? ? ? ? ? ? ? ? ? Zap、Burp這樣的工具來輔助我們把之前的安全測(cè)試用例執(zhí)行一次摇锋,同時(shí)還再可以對(duì)系統(tǒng)的安全性做一下探索測(cè)試丹拯。
7. 向團(tuán)隊(duì)反饋所發(fā)現(xiàn)的安全漏洞
都測(cè)得差不多的時(shí)候站超,我們就可以向團(tuán)隊(duì)以及相關(guān)干系人匯報(bào)安全測(cè)試的結(jié)果了。跟非安全測(cè)試不同的地方是乖酬,當(dāng)我們反饋安全漏洞的時(shí)候死相,要考慮是否不同漏洞結(jié)合起來會(huì)增加系統(tǒng)的安全風(fēng)險(xiǎn)。舉個(gè)例子:如果有兩個(gè)安全漏洞咬像,一個(gè)是系統(tǒng)沒有很強(qiáng)的用戶賬戶密碼規(guī)規(guī)則算撮,另一個(gè)是系統(tǒng)沒有對(duì)上傳圖片的大小做限制,那么惡意
用戶把這兩個(gè)漏洞一結(jié)合起來县昂,事情就比原來風(fēng)險(xiǎn)大很多肮柜。那么我們就必須建議提高這兩個(gè)漏洞中任意一個(gè)的優(yōu)先級(jí)。
當(dāng)我們用“三板斧”走完這七步以后倒彰,我們已經(jīng)可以把很多安全漏洞都挖出來了审洞。是不是沒有想象中的難?所以待讳,測(cè)試同仁們芒澜,讓我們做安全測(cè)試吧!
如果對(duì)軟件測(cè)試有興趣创淡,想了解更多的測(cè)試知識(shí)痴晦,解決測(cè)試問題,以及入門指導(dǎo),幫你解決測(cè)試中遇到的困惑琳彩,我們這里有技術(shù)高手阅酪。如果你正在找工作或者剛剛學(xué)校出來,又或者已經(jīng)工作但是經(jīng)常覺得難點(diǎn)很多汁针,覺得自己測(cè)試方面學(xué)的不夠精想要繼續(xù)學(xué)習(xí)的术辐,想轉(zhuǎn)行怕學(xué)不會(huì)的,可以加入我的QQ群測(cè)試學(xué)習(xí)大家庭:747981058