压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

身份管理的15個(gè)安全開發(fā)實(shí)踐

應(yīng)用或服務(wù)的安全編碼很重要,但若事關(guān)處理個(gè)人數(shù)據(jù)的系統(tǒng),那就不僅僅是重要,而是至關(guān)重要了。

軟件分析公司CAST分析了1380個(gè)軟件應(yīng)用,在代碼中發(fā)現(xiàn)了驚人的130萬個(gè)漏洞。

有點(diǎn)網(wǎng)絡(luò)安全常識(shí)的人都知道,軟件漏洞就是向網(wǎng)絡(luò)罪犯敞開的大門。

身份管理可以說是所有技術(shù)門類中風(fēng)險(xiǎn)最大的服務(wù)。身份盜竊事件常伴我們左右。咨詢公司 Javelin Research 從事身份盜竊事件研究多年,其《2018身份欺詐》報(bào)告將2017年身份盜竊統(tǒng)計(jì)數(shù)據(jù)描述為“歷史新高”,揭示身份盜竊繼續(xù)困擾著這個(gè)行業(yè)。

身份管理中我們常會(huì)談及所謂“武器化身份”的概念,也就是強(qiáng)化系統(tǒng)中的接入點(diǎn)和用戶與服務(wù)交互的位置。然而,武器化過程需分層實(shí)施,而其中一層就是代碼層。

身份管理安全編碼

數(shù)字身份平臺(tái)可能會(huì)非常復(fù)雜,因?yàn)檫@些平臺(tái)往往得依賴外部數(shù)據(jù)源,并與第三方API集成。消費(fèi)級(jí)身份與訪問管理(IAM)甚至更為復(fù)雜。這類平臺(tái)需要擴(kuò)展功能來上傳、存儲(chǔ)和共享文檔與圖片。很多身份服務(wù)還融入移動(dòng)設(shè)備App,或者說完全基于移動(dòng)App。依靠身份生態(tài)系統(tǒng)各組件間通信所用協(xié)議的固有安全是不夠的。此類生態(tài)系統(tǒng)的底層代碼必須盡可能安全,同時(shí)又不能對(duì)其功能造成影響。

開發(fā)身份平臺(tái)時(shí)可以采用如下幾種最佳安全編碼實(shí)踐:

1. 使用良好資源

從安全編碼入門經(jīng)典資源開始。開放網(wǎng)絡(luò)應(yīng)用安全計(jì)劃(OWASP)是安全編碼實(shí)際上的入門資源。其安全編碼“快速參考指南”是個(gè)極好的起始點(diǎn),可作為開發(fā)過程中的復(fù)核工具使用。放心充分利用他們的資源。

2. 采用防御性編程技巧

這么做可以一定程度上避免出現(xiàn)可利用漏洞。其中一招是等價(jià)比較:把常量放到比較語(yǔ)句的前端。常量前置的話,如果不小心把比較操作符(兩個(gè)等號(hào)“==”)誤敲成賦值操作符(一個(gè)等號(hào)“=”),在編譯或運(yùn)行時(shí)階段就會(huì)報(bào)錯(cuò)。舉個(gè)例子:

  • 不良編碼習(xí)慣:變量在前

if ($result == ‘SUCCESS’) {

  • 更好些的編碼習(xí)慣: 常量在前——如果 “==” 誤敲成 “=” 會(huì)導(dǎo)致運(yùn)行時(shí)錯(cuò)誤或編譯錯(cuò)誤

if (‘SUCCESS’ == $result) {

3. 清洗數(shù)據(jù)

數(shù)字身份,尤其是消費(fèi)級(jí)數(shù)字身份系統(tǒng),往往會(huì)調(diào)用外部數(shù)據(jù)源。來自外部源或由用戶提供的所有數(shù)據(jù)都應(yīng)該被當(dāng)成不可信的。對(duì)Web客戶端來說,這些數(shù)據(jù)包括從查詢字符串或散列參數(shù)、cookie、本地存儲(chǔ)等等獲取的數(shù)據(jù);對(duì)服務(wù)器端應(yīng)用來說,這些數(shù)據(jù)包含通過POST、GET、cookie等等提交的數(shù)據(jù)。原生應(yīng)用常會(huì)讀取配置文件,而這些配置文件有可能被故意篡改。

無論如何,第一道防線都是數(shù)據(jù)清洗:確保數(shù)據(jù)中僅含有經(jīng)允許的字符/格式。其中一個(gè)重點(diǎn)是檢查最大數(shù)據(jù)域長(zhǎng)度,避免緩沖區(qū)溢出攻擊。

數(shù)字身份平臺(tái)安全檢查的另一個(gè)重要領(lǐng)域是圖片上傳。隨著證件照片的存儲(chǔ)和共享越來越廣泛,IAM和CIAM服務(wù)也變得越來越重要。用戶上傳照片之類的文件上傳行為可能會(huì)特別危險(xiǎn),必須嚴(yán)格檢查以確保文件真的只是單純的圖片而沒有隱藏的可執(zhí)行內(nèi)容。

4. 篩查

文檔和其他文件存儲(chǔ)是數(shù)字身份生態(tài)系統(tǒng)的重要部分。放到存儲(chǔ)中的所有數(shù)據(jù)都必須經(jīng)過可執(zhí)行內(nèi)容篩查。篩查過程無關(guān)底層數(shù)據(jù)庫(kù)技術(shù)。比如說,雖然非SQL數(shù)據(jù)庫(kù)對(duì)SQL注入攻擊免疫,但仍有自身弱點(diǎn),仍然要經(jīng)過篩查。

5. 過濾

類似的,不應(yīng)直接接受外部命令字符串。應(yīng)設(shè)置過濾器,總是檢查命令是否有效且適用于相應(yīng)上下文。

6. 防止未經(jīng)驗(yàn)證的代碼執(zhí)行

避免使用eval()類函數(shù),因?yàn)榇祟惡瘮?shù)允許未經(jīng)驗(yàn)證的代碼執(zhí)行。內(nèi)嵌eval()函數(shù)的函數(shù)也不應(yīng)采用,比如JavaScript的SetTimer()。

7. 彈性為王

開發(fā)面向消費(fèi)者的數(shù)字身份服務(wù)往往意味著需要覆蓋大量用戶。你得允許各種各樣的值。應(yīng)用開發(fā)編程的時(shí)候要考慮彈性,這樣才能在外部數(shù)據(jù)值超出預(yù)期范圍或類型時(shí)不會(huì)發(fā)生故障或允許代碼注入。良好的單元測(cè)試或功能測(cè)試通常能檢測(cè)出此類問題。

8. 謹(jǐn)慎使用開源代碼

產(chǎn)品中引入最新版開源代碼有可能同時(shí)引入了惡意軟件。使用開源代碼包時(shí),最好在包管理器中設(shè)置特定版本號(hào),以免誤用未經(jīng)驗(yàn)證的版本。編譯過程應(yīng)包含對(duì)所有外部文件的散列檢查。

9. 錯(cuò)誤響應(yīng)

錯(cuò)誤響應(yīng)是數(shù)字身份服務(wù)的關(guān)鍵部分,因?yàn)榭梢愿嬷脩魡栴}點(diǎn)并改善可用性。然而,這一功能也可能被惡意黑客用于摸清系統(tǒng)行為。要確保錯(cuò)誤響應(yīng)動(dòng)作不會(huì)向攻擊者泄露信息。客戶端-服務(wù)器錯(cuò)誤響應(yīng)應(yīng)僅包含知會(huì)用戶的最少信息,而不是協(xié)助攻擊者窺探應(yīng)用。

10. 審計(jì)日志

如果攻擊確實(shí)發(fā)生了,你會(huì)想要知道到底結(jié)果如何以及確保攻擊事件可以復(fù)現(xiàn)。但日志記錄需有效,用無意義的審計(jì)數(shù)據(jù)填充日志可能會(huì)適得其反。

11. 數(shù)字簽名

盡可能采用數(shù)字簽名來驗(yàn)證數(shù)據(jù)完整性。散列消息驗(yàn)證碼(HMAC)是經(jīng)濟(jì)實(shí)惠且有效的驗(yàn)證方式。類似的,如果數(shù)據(jù)十分敏感,比如包含PII,那么需要確保數(shù)據(jù)存儲(chǔ)和傳輸過程中加密。通過公共或私人網(wǎng)絡(luò)傳送任何東西都應(yīng)使用TLS。

12. 使用令牌進(jìn)行安全通信

進(jìn)程間通信可以考慮使用令牌而不是口令進(jìn)行身份驗(yàn)證。

13. 移動(dòng)應(yīng)用

移動(dòng)設(shè)備應(yīng)用越來越多地被用于數(shù)字身份證明和交易。最好假定設(shè)備是可以被越獄的。仔細(xì)檢查你處理的數(shù)據(jù)并評(píng)估所涉風(fēng)險(xiǎn)。在可能的情況下引入越獄檢測(cè)代碼。

14. 漏洞檢查

每次新升級(jí)完成都要做漏洞檢查。有很多專業(yè)公司提供這項(xiàng)服務(wù)。CheckMarx或CAST之類的公司提供獨(dú)立源代碼分析器服務(wù)。此類解決方案是安全編碼實(shí)踐的重要組成部分,盡管它們不應(yīng)被當(dāng)做人工代碼檢查的替代品,而應(yīng)作為附加檢查完成。

15. 最重要的

緊跟最新漏洞。嚴(yán)重漏洞總會(huì)出現(xiàn)在 CVE Details 上。必須注意到新威脅并采取行動(dòng),確保自己的代碼中不存在這些漏洞。

應(yīng)用或服務(wù)的安全編碼很重要,但若事關(guān)處理個(gè)人數(shù)據(jù)的系統(tǒng),那就不僅僅是重要,而是至關(guān)重要了。如果你設(shè)計(jì)或開發(fā)數(shù)字身份系統(tǒng),安全和可用性總會(huì)成為難以平衡的兩難選擇。但良好的安全編碼習(xí)慣可助你在管理網(wǎng)絡(luò)攻擊威脅的同時(shí)確保消費(fèi)者身份系統(tǒng)的復(fù)雜功能不受影響。

CAST軟件應(yīng)用分析報(bào)告:

https://www.castsoftware.com/news-events/press-release/press-releases/download/cast-research-on-the-state-of-software-security-reveals-riskiest-applications

Javelin《2018身份欺詐》報(bào)告:

https://www.javelinstrategy.com/coverage-area/2018-identity-fraud-fraud-enters-new-era-complexity

OWASP《安全編碼實(shí)踐快速參考指南》:

https://www.owasp.org/index.php/OWASP_Secure_Coding_Practices_-_Quick_Reference_Guide

CVE Details:

https://www.cvedetails.com/browse-by-date.php

上一篇:谷歌邁出了“干掉”URL的第一步

下一篇:以太坊UDP流量放大反射DDOS漏洞