安全編碼,遵循代碼安全最佳實(shí)踐的代碼設(shè)計(jì)原則,保護(hù)發(fā)布的代碼免受已知、未知和意外漏洞的影響,例如安全漏洞、云機(jī)密丟失、嵌入式憑證、共享密鑰、機(jī)密業(yè)務(wù)數(shù)據(jù)和個(gè)人可識(shí)別信息 (PII)。它反映了開發(fā)人員、安全團(tuán)隊(duì)和 DevOps 之間更廣泛的理解,即代碼安全必須作為CI/CD的一個(gè)組成部分來實(shí)施,支持代碼和基礎(chǔ)設(shè)施的持續(xù)變化,提供對給定環(huán)境的所有可見和隱藏組件的可見性。安全編碼需要意愿、教育、工具,最重要的是文化變革。

為什么安全編碼很重要?
安全編碼通過字面上將開發(fā)人員命名為負(fù)責(zé)代碼安全而不是安全團(tuán)隊(duì),展示了責(zé)任的變化。這也為左移安全概念鋪平了道路,該安全概念已作為軟件開發(fā)生命周期 (SDLC) 最佳實(shí)踐的一部分被廣泛采用。
安全編碼引入了一個(gè)抽象層,該層在將現(xiàn)有代碼和任何新代碼提交到代碼存儲(chǔ)庫時(shí)對其進(jìn)行掃描。它有助于實(shí)施最佳實(shí)踐,進(jìn)而實(shí)施生產(chǎn)就緒代碼標(biāo)準(zhǔn),并防止人為錯(cuò)誤和開發(fā)人員“偷工減料”以滿足嚴(yán)格的期限。
影響代碼的安全漏洞
創(chuàng)建軟件、應(yīng)用程序或編寫基礎(chǔ)架構(gòu)即代碼需要云機(jī)密來訪問和控制云資源,并保存敏感參數(shù)以實(shí)現(xiàn)自動(dòng)化。有無數(shù)種情況可能會(huì)在您的代碼中引入漏洞,下面我們將探討遇到的最關(guān)鍵和最常見的問題:
泄露的訪問密鑰
所有編程語言都需要編程密鑰來訪問和管理云資源。密鑰控制對 IAM 角色的訪問,這些角色授予針對云資源執(zhí)行的權(quán)限。秘密應(yīng)該始終被加密,但一個(gè)常見的錯(cuò)誤是將訪問密鑰和秘密嵌入到本地參數(shù)存儲(chǔ)或 var 文件中。開發(fā)人員很容易無意中將這些秘密提交到代碼存儲(chǔ)庫,尤其是在對代碼進(jìn)行故障排除時(shí)。如果您選擇的存儲(chǔ)庫是公開的,那么世界上任何人都可以使用任何已發(fā)布的秘密。

硬編碼應(yīng)用程序機(jī)密
每個(gè)應(yīng)用程序都有一個(gè)嵌入式配置數(shù)據(jù)集,其中詳細(xì)說明了應(yīng)用程序針對關(guān)聯(lián)應(yīng)用程序使用的安全參數(shù)。這可能包括數(shù)據(jù)庫登錄憑據(jù)、數(shù)據(jù)庫參數(shù)、中間件配置變量或前端/后端 Web 應(yīng)用程序服務(wù)的訪問詳細(xì)信息。參數(shù)和機(jī)密應(yīng)該加密并且永遠(yuǎn)不要以明文形式寫入,但某些應(yīng)用程序僅使用文件系統(tǒng)權(quán)限來保護(hù)未經(jīng)授權(quán)的用戶無法讀取配置。如果代碼提交中未使用 .gitignore 等功能,則文件將以明文形式保存。
安全編碼最佳實(shí)踐
保護(hù)代碼符合行業(yè)標(biāo)準(zhǔn)是一項(xiàng)極具挑戰(zhàn)性的工作。以下是保護(hù)您的工作負(fù)載免受損害的頂級安全代碼最佳實(shí)踐。
可見性和監(jiān)控:如果沒有安全的編碼保護(hù),就很難準(zhǔn)確知道代碼存儲(chǔ)庫中保存了哪些數(shù)據(jù)。自動(dòng)檢測監(jiān)控掃描存儲(chǔ)庫以查找漏洞,如果遇到任何問題,則會(huì)觸發(fā)警報(bào)以進(jìn)行分類。映射和監(jiān)控隱藏的敏感資產(chǎn)、代碼庫、日志和其他可能暴露給面向公眾的存儲(chǔ)庫的敏感知識(shí)產(chǎn)權(quán)。
安全自動(dòng)化:自動(dòng)秘密檢測消除了必須手動(dòng)搜索代碼安全漏洞的艱苦和重復(fù)過程。自動(dòng)化引擎使用 ML 訓(xùn)練的檢測器掃描 repo 以提高成功率,并且預(yù)提交檢查將在代碼提交到源代碼控制之前識(shí)別問題。
日志和警報(bào):秘密可能無意中包含在日志條目中,因此自動(dòng)保護(hù)應(yīng)該針對日志。此外,確保在本地為自定義應(yīng)用程序啟用詳細(xì)日志記錄至關(guān)重要,這樣可以監(jiān)控看不見的資產(chǎn),但永遠(yuǎn)不會(huì)檢查代碼存儲(chǔ)庫。
阻止反射 XSS:防止非持久性或反射 XSS 攻擊可防止將惡意腳本提交到源代碼控制中。反過來,這可以保護(hù)用戶免受有針對性的惡意 HTML 或 JavaScript 的執(zhí)行。
減少錯(cuò)誤配置:人為錯(cuò)誤和錯(cuò)誤是編碼不可避免的,安全編碼最佳實(shí)踐要求能夠快速修復(fù)任何問題。應(yīng)立即修復(fù)安全漏洞,并從回購歷史中刪除所有痕跡。
保護(hù)機(jī)密和數(shù)據(jù):安全編碼可防止機(jī)密和業(yè)務(wù)數(shù)據(jù)泄露到公共領(lǐng)域。這包括密碼、API 密鑰、令牌、憑證、PCI、PII 和 PHI 數(shù)據(jù)。該解決方案應(yīng)作為標(biāo)準(zhǔn)滿足這些 OWASP 建議:2017 年 - 身份驗(yàn)證失效,2017 年 - 敏感數(shù)據(jù)泄露,2017 年 - 訪問控制失效,2017 年 - 安全配置錯(cuò)誤。
利用 AI/ML 的力量:威脅的范圍是巨大的,通過使用 AI/ML 數(shù)據(jù)集訓(xùn)練檢測器自動(dòng)識(shí)別已知和未知的代碼安全風(fēng)險(xiǎn)來簡化任務(wù)。

安全編碼技術(shù)
可以引入無數(shù)技術(shù)來保護(hù)代碼和業(yè)務(wù)數(shù)據(jù)。安全編碼的基礎(chǔ)知識(shí)必須涵蓋移動(dòng)設(shè)備、服務(wù)器和嵌入式應(yīng)用程序。
以下是一些頂級安全編碼技術(shù):
實(shí)施代碼混淆:在可能的情況下,使用代碼縮小和代碼混淆等技術(shù)保護(hù)您的代碼。
避免偷工減料:不要試圖走捷徑。開發(fā)人員的最后期限很緊,但交付生產(chǎn)就緒代碼是必不可少的,即使這會(huì)導(dǎo)致延遲。
Code Reviews:在主要項(xiàng)目上仍然有同行代碼審查的地方,允許開發(fā)人員相互交流想法。此外,它還為其他專家提供了批評代碼的機(jī)會(huì)。
創(chuàng)建安全文化:文化變革很難實(shí)現(xiàn),需要時(shí)間才能融入公司。向整個(gè)團(tuán)隊(duì)邁出第一步,推廣安全第一的敘述對于成功至關(guān)重要。
文檔標(biāo)準(zhǔn):安全編碼標(biāo)準(zhǔn)必須記錄在案并在私人倉庫中共享。寫下規(guī)則讓開發(fā)人員有機(jī)會(huì)審查并有助于推動(dòng)文化變革。
驗(yàn)證外部數(shù)據(jù)源:有時(shí)使用已經(jīng)編寫的模塊和代碼是有意義的。驗(yàn)證您的來源是否合法,使用 SHA 身份驗(yàn)證交叉檢查下載,并確保提取的任何數(shù)據(jù)都是加密的和有效的。
使用威脅建模:威脅建模引入了一個(gè)多階段過程,該過程在整個(gè)軟件開發(fā)過程中檢查代碼是否存在弱點(diǎn)和漏洞。
在 CI/CD 中使用自動(dòng)化工具:很難有效地執(zhí)行安全標(biāo)準(zhǔn),考慮投資自動(dòng)化工具,例如Check Point CloudGuard Spectral,它可以為您完成所有艱苦的工作。






