你造嗎?開(kāi)發(fā)人都知道這四個(gè)安全常識(shí)
譯文【51CTO.com快譯】對(duì)安全性的考量應(yīng)該從軟件的開(kāi)發(fā)伊始就受到足夠的重視,這已然成為預(yù)防攻擊活動(dòng)并保護(hù)全球用戶的重要前提。下面,我們一起來(lái)了解每位開(kāi)發(fā)者皆應(yīng)了解的基本安全常識(shí)。
對(duì)輸入內(nèi)容保持懷疑
作為起點(diǎn),軟件保護(hù)工作應(yīng)該對(duì)一切接收到的信息與數(shù)據(jù)進(jìn)行檢查。事實(shí)上,預(yù)防惡意輸入內(nèi)容接觸您的軟件并實(shí)施執(zhí)行,將有效提升攻擊或者安全違規(guī)行為獲得成功的難度。
然而,開(kāi)發(fā)者往往更傾向于對(duì)輸入內(nèi)容進(jìn)行錯(cuò)誤檢查。這顯然是種誤區(qū),因?yàn)楣粽呖梢暂p松繞過(guò)這些非正確值,并且進(jìn)入變更正確值的模式,以至于我們無(wú)法檢查到其篡改的內(nèi)容。而作為開(kāi)發(fā)者,我們應(yīng)根據(jù)模式對(duì)輸入內(nèi)容進(jìn)行檢查,且拒絕一切與正常使用模式不符的輸入信息。
減少攻擊面
所謂攻擊面,是指所有攻擊點(diǎn)與攻擊量的總和,黑客或者未授權(quán)用戶可能突破安全保護(hù),接觸數(shù)據(jù)并竊取敏感信息。所謂攻擊微量是指惡意代碼的執(zhí)行方法,例如病毒或者蠕蟲(chóng),其能夠感染目標(biāo)計(jì)算機(jī)并進(jìn)一步傳播至更多設(shè)備當(dāng)中。
黑客只需要找出一個(gè)薄弱點(diǎn)即可成功入侵。正因?yàn)槿绱?,現(xiàn)代企業(yè)需要盡量減少攻擊面,同時(shí)利用可視化系統(tǒng)繪制所有路徑、網(wǎng)絡(luò)與設(shè)備,從而及時(shí)發(fā)現(xiàn)弱點(diǎn)并消除相關(guān)威脅。
但同樣重要的是,減少攻擊面并不能降低黑客成功入侵之后所造成的危害與后果。事實(shí)上,減少攻擊面的作用在于降低發(fā)生安全問(wèn)題的幾率。具體來(lái)講,我們可以通過(guò)減少代碼運(yùn)行量、減少未授權(quán)用戶可用代碼以及減少可利用入口點(diǎn)等方式實(shí)現(xiàn)攻擊面控制。
以安全方式應(yīng)對(duì)失敗
每套系統(tǒng)都可能遭遇入侵,這種失敗是不可避免的。而黑客自然會(huì)積極利用各類(lèi)手段促使這種失敗的發(fā)生,包括觸發(fā)特定故障以控制系統(tǒng)或軟件。正因?yàn)槿绱?,我們必須制定合理的?yīng)急計(jì)劃。
在系統(tǒng)發(fā)生故障時(shí),最重要的是確保默認(rèn)值符合安全要求,即默認(rèn)拒絕訪問(wèn)。此外,大家應(yīng)檢查故障返回值,撤銷(xiāo)其間的一切變更,并在故障后保證恢復(fù)至安全狀態(tài)。另外,即使可訪問(wèn)性已經(jīng)遭到破壞,系統(tǒng)的隱私性與完整性仍應(yīng)保持不變。
另外,我們應(yīng)確保黑客無(wú)法在系統(tǒng)故障期間訪問(wèn)受保護(hù)的限制性數(shù)據(jù)。在系統(tǒng)發(fā)生故障時(shí),往往會(huì)顯示一些與問(wèn)題相關(guān)的敏感信息,而這些很可能為攻擊方帶來(lái)啟發(fā)。因此,我們應(yīng)在默認(rèn)情況下要求系統(tǒng)故障出現(xiàn)時(shí)拒絕訪問(wèn),并僅在預(yù)設(shè)條件得到滿足后才重新恢復(fù)可訪問(wèn)能力。
使用威脅建模
提升軟件或應(yīng)用程序安全性的最佳途徑之一,在于利用威脅建模對(duì)其進(jìn)行測(cè)試。基本上,威脅建模就是在模擬攻擊者如何突破安全保護(hù)并奪取軟件控制權(quán)或盜竊有價(jià)值數(shù)據(jù)。開(kāi)發(fā)者可以借此發(fā)現(xiàn)軟件中的漏洞,并消除風(fēng)險(xiǎn)或威脅。
威脅建模應(yīng)在開(kāi)發(fā)流程起始時(shí)開(kāi)始進(jìn)行,并一直持續(xù)至流程結(jié)束。如此一來(lái),開(kāi)發(fā)者即可全程確保對(duì)安全漏洞的監(jiān)控,同時(shí)發(fā)現(xiàn)編寫(xiě)代碼時(shí)是否引發(fā)其它疏漏。
一般來(lái)講,威脅建?;诎踩珜?duì)象發(fā)現(xiàn),例如對(duì)用戶身份進(jìn)行保護(hù)、關(guān)注應(yīng)用程序安全問(wèn)題可能帶來(lái)的聲譽(yù)影響,同時(shí)對(duì)應(yīng)用程序的數(shù)據(jù)流、組件與受信邊界加以衡量。在評(píng)估之后,我們即可立足安全威脅及漏洞層面對(duì)應(yīng)用程序進(jìn)行分析。另外,我們還應(yīng)立足黑客視角模擬攻擊樹(shù)結(jié)構(gòu),進(jìn)而確定攻擊條件。通過(guò)這種角色換位,大家將更好地防范攻擊并保護(hù)軟件。
軟件開(kāi)發(fā)是一項(xiàng)復(fù)雜的流程,一旦黑客發(fā)現(xiàn)了可乘之機(jī),那么此前投入的一切努力都將付之東流。因此,每位開(kāi)發(fā)者應(yīng)從起步時(shí)即高度關(guān)注安全保障工作。事實(shí)已反復(fù)證明,在問(wèn)題發(fā)生后再行保護(hù)的實(shí)施難度與實(shí)現(xiàn)成本會(huì)更高昂。
原文鏈接:https://dzone.com/articles/4-things-that-every-developer-should-know-about-se (作者 Oscar Waterworth)
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】