安全編碼為何如此重要?

當(dāng)組織發(fā)生重大安全漏洞時(shí),他們并不總是披露安全漏洞的性質(zhì)。這是因?yàn)榧词顾麄冐?fù)有責(zé)任,知道原因并已修復(fù),但有關(guān)如何實(shí)現(xiàn)這一目標(biāo)的信息對(duì)于未來(lái)的攻擊者來(lái)說(shuō)仍然是寶貴的知識(shí)。但很容易想象,不安全的編碼可能導(dǎo)致這些問(wèn)題的很大一部分,尤其是數(shù)據(jù)泄露。

數(shù)據(jù)泄露可能是最可怕、代價(jià)最高的安全漏洞。僅在 2020 年,就有超過(guò) 250 億條記錄被泄露或被盜,而據(jù)估計(jì),2021 年的情況只會(huì)變得更糟。組織需要加強(qiáng)其安全協(xié)議,而安全編碼是這些安全協(xié)議的核心。如果沒(méi)有安全編碼,所有其他安全協(xié)議都無(wú)法保護(hù)您最寶貴的資產(chǎn)。

來(lái)源:https://www.securecodewarrior.com/blog/we-need-heroes-to-secure-our-code-have-developers-got-what-it-takes

危害源代碼完整性的五大行為

這里的重點(diǎn)是開發(fā)人員在職業(yè)生涯早期通常會(huì)采取的常見(jiàn)行為。如果不加以控制,這些行為可能會(huì)在近期或遠(yuǎn)期造成嚴(yán)重的維護(hù)和安全問(wèn)題。確保組織中的所有開發(fā)人員都了解這些不良做法并學(xué)習(xí)如何避免它們。

1. 未經(jīng)檢查的復(fù)制代碼

我聽(tīng)到過(guò)有人對(duì)復(fù)制粘貼式編程既嗤之以鼻,又大加贊揚(yáng)。有時(shí)開發(fā)需要一些核心功能,而這些功能已經(jīng)被其他開發(fā)人員編碼了數(shù)萬(wàn)次。那么為什么不復(fù)制他們的工作,而不是從頭開始編寫呢?大多數(shù)時(shí)候,你肯定應(yīng)該使用別人的作品,但你必須聰明地使用它。

了解你復(fù)制的代碼。如果你決定復(fù)制代碼,一定要通讀并理解它。就像你審查同事的代碼一樣。永遠(yuǎn)不要盲目相信互聯(lián)網(wǎng)上有人寫出了足夠好的代碼并將其公開。驗(yàn)證一下。

盡可能使用庫(kù)。在某種程度上,使用庫(kù)比復(fù)制代碼更可取。如果您需要一些字符串處理功能,那么將來(lái)可能需要更多這樣的功能。使用處理字符串的庫(kù)可能是您項(xiàng)目的一個(gè)很好的補(bǔ)充。當(dāng)然,您不希望庫(kù)膨脹。因此,您必須仔細(xì)選擇要添加到項(xiàng)目中的庫(kù)。如果您只需要一個(gè)函數(shù),那么復(fù)制它可能比使用整個(gè)庫(kù)更好。

2. 已棄用的、廢棄的和可疑的庫(kù)

市面上有很多糟糕的代碼。有時(shí),開源代碼未經(jīng)社區(qū)的適當(dāng)審查就被打包到庫(kù)中。這可能會(huì)導(dǎo)致代碼存在安全漏洞,甚至沒(méi)人愿意去發(fā)現(xiàn),更不用說(shuō)修復(fù)了。

使用庫(kù)時(shí),請(qǐng)確保它們是被廣泛使用和受信任組織或大量開發(fā)人員監(jiān)控的庫(kù)。這些庫(kù)應(yīng)該得到維護(hù)并定期更新。如果該庫(kù)十年來(lái)都沒(méi)有更新過(guò),那么在將其納入安全項(xiàng)目之前,您需要檢查整個(gè)代碼庫(kù)。否則,您就不能信任它。

3. 不受限制的存儲(chǔ)庫(kù)訪問(wèn)

在當(dāng)今的環(huán)境下,人們傾向于信任開發(fā)人員,并允許他們不受限制地訪問(wèn)源代碼存儲(chǔ)庫(kù)。這是一個(gè)重大的安全漏洞。開發(fā)人員不需要訪問(wèn)所有內(nèi)容,他們只需要訪問(wèn)他們正在處理的代碼區(qū)域,甚至可能不需要寫入權(quán)限。

限制訪問(wèn)有時(shí)會(huì)減慢開發(fā)速度,但更多的時(shí)候它有助于保持代碼的解耦和模塊化。如果開發(fā)人員只能更改他們正在開發(fā)的模塊,他們就被迫與項(xiàng)目的其余部分保持脫鉤。即使不考慮安全性,這也是一件好事

無(wú)法訪問(wèn)整個(gè)源代碼的員工造成破壞的能力非常有限,無(wú)論是出于惡意還是無(wú)能。但即使在受限訪問(wèn)策略下,當(dāng)開發(fā)人員離開組織時(shí),IT 也必須撤銷對(duì)源代碼存儲(chǔ)庫(kù)的訪問(wèn)權(quán)限。閑置未使用的憑據(jù)將導(dǎo)致問(wèn)題發(fā)生。

4. 硬編碼秘密

機(jī)密是提供應(yīng)用程序到應(yīng)用程序訪問(wèn)的任何在線憑證。它可以是 API 密鑰、云憑證、加密密鑰、數(shù)據(jù)庫(kù)訪問(wèn)詳細(xì)信息等等。缺乏經(jīng)驗(yàn)的開發(fā)人員在初始開發(fā)時(shí)通常會(huì)在代碼中使用純文本機(jī)密。這些機(jī)密通常會(huì)被遺忘和遺留,從而導(dǎo)致潛在的泄漏。

托管在 GitHub 等公共云服務(wù)上的源代碼很容易被惡意人員掃描和利用。在將代碼上傳到云端之前,請(qǐng)務(wù)必掃描代碼以查找機(jī)密信息。

但即使源代碼從未公開,大多數(shù)編譯代碼都可以被逆向工程。混淆可以幫助增加對(duì)編譯代碼進(jìn)行逆向工程的難度。然而,最好以一種防止泄露的方式妥善存儲(chǔ)機(jī)密。

5. 錯(cuò)誤消息中暴露的信息

使用詳細(xì)的錯(cuò)誤消息來(lái)調(diào)試代碼是開發(fā)人員的常見(jiàn)做法。但這些錯(cuò)誤消息可能會(huì)向試圖侵入您的軟件的攻擊者提供信息。錯(cuò)誤消息需要對(duì)用戶有所幫助,但不能提供任何有關(guān)代碼如何工作的信息。

隱藏有關(guān)代碼結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)和與其他軟件的連接的信息。此外,確保捕獲并處理異常。未捕獲的異常通常會(huì)提供堆棧跟蹤,其中包含攻擊者可以利用的信息。捕獲所有相關(guān)異常,不要拋出無(wú)法捕獲的未經(jīng)檢查或運(yùn)行時(shí)異常。

通過(guò)了解這些壞習(xí)慣以及如何養(yǎng)成更好的習(xí)慣,您已經(jīng)在著手開發(fā)更安全的代碼。有了這些知識(shí),請(qǐng)注意您可能擁有的任何習(xí)慣,并記錄下來(lái),如果您認(rèn)為它們可能會(huì)導(dǎo)致安全問(wèn)題。讓同事們注意到這一點(diǎn),你可能會(huì)發(fā)現(xiàn)其他人也在做同樣的事情。一起尋找解決方案并養(yǎng)成新習(xí)慣。如果其他人和你一起改變習(xí)慣,改變習(xí)慣就會(huì)容易得多。

文章來(lái)源:5 Bad Coding Habits That Leave Your Source Code Exposed

上一篇:

大數(shù)據(jù)安全的十大要點(diǎn)

下一篇:

22個(gè)Web可訪問(wèn)性測(cè)試工具及其測(cè)試內(nèi)容
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率

查看全部API→
??

熱門場(chǎng)景實(shí)測(cè),選對(duì)API

#AI文本生成大模型API

對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)