證系列API.png)
穩(wěn)定好用的認(rèn)證系列API合輯
通常在 B 端產(chǎn)品中,會(huì)對(duì)某些 API 返回的部分字段數(shù)據(jù)進(jìn)行脫敏,比如手機(jī)號(hào),郵箱等,以保證用戶(hù)的信息隱私。
盡管 API 層面對(duì)敏感數(shù)據(jù)做了脫敏處理,但敏感數(shù)據(jù)如果未進(jìn)行加密處理,或加密的強(qiáng)度不夠,或者沒(méi)有安全的存儲(chǔ)加密數(shù)據(jù),以至于攻擊者仍然能夠獲得敏感信息,進(jìn)而攻擊者可能利用此漏洞對(duì)客戶(hù)端,或服務(wù)器發(fā)送特殊構(gòu)造的數(shù)據(jù),發(fā)出攻擊,從而了解后臺(tái)數(shù)據(jù)庫(kù)表等信息,對(duì)系統(tǒng)安全構(gòu)成威脅。這也就是接口敏感數(shù)據(jù)被竊取了。
注:某單位在某省攻防演練,一下扣到負(fù)幾千分的原因,您找到了嗎?需要防護(hù)改進(jìn),請(qǐng)聯(lián)系三沐,必須給你安排的明明白白。
深究起來(lái),XSS 攻擊更多偏向于前端這一層,但是對(duì)于一個(gè)能夠提供充分安全保障的系統(tǒng)來(lái)說(shuō),API 的對(duì)于參數(shù)的安全校驗(yàn)也是非常重要的一環(huán),對(duì)于系統(tǒng)來(lái)說(shuō),應(yīng)該確保核心 API 的業(yè)務(wù)對(duì)于所有的入?yún)⒍紤?yīng)該是安全,可信且經(jīng)過(guò)校驗(yàn)之后才能進(jìn)行數(shù)據(jù)存儲(chǔ)的。這樣可以從源頭上保障 XSS 攻擊影響的范圍進(jìn)一步縮小。
在系統(tǒng)架構(gòu)設(shè)計(jì)之初,系統(tǒng)安全一定是一個(gè)重要的考量因素被納入到架構(gòu)設(shè)計(jì)規(guī)劃中,系統(tǒng)安全關(guān)乎著既關(guān)乎公司的生存,也關(guān)乎產(chǎn)品的盈利,更進(jìn)一步說(shuō),更關(guān)乎著法律法規(guī)對(duì)公司的監(jiān)管合規(guī)性依據(jù)。下圖所示,為一個(gè)通用的微服務(wù)業(yè)務(wù)架構(gòu)圖。
從實(shí)踐經(jīng)驗(yàn)來(lái)看,安全在一個(gè)系統(tǒng)的架構(gòu)設(shè)計(jì)中占據(jù)著舉足輕重的地位,從上圖來(lái)看,可以說(shuō),安全考慮在架構(gòu)設(shè)計(jì)的每一環(huán)都有著落地的目標(biāo),拆開(kāi)來(lái)看,具體如下所述。
涉及到前端安全的技術(shù),比如:
· 頁(yè)面表單的防重提交(功能上限制防刷的可能性);
· 接口請(qǐng)求前關(guān)鍵參數(shù)的校驗(yàn),脫敏,XSS 不安全字符的自動(dòng)識(shí)別;
· 使用參數(shù)加密,Base64 處理,禁止明文傳輸;
防火墻本身具有較強(qiáng)的抗攻擊能力,它是提供信息安全服務(wù)、實(shí)現(xiàn)網(wǎng)絡(luò)和信息安全的基礎(chǔ)設(shè)施之一。
防火墻對(duì)于一個(gè)互聯(lián)網(wǎng)公司的重要意義毋庸置疑,尤其是金融類(lèi),銀行類(lèi)等 B 端產(chǎn)品,防火墻的作用可以說(shuō)是不可替代的,盡管這個(gè)技術(shù)已經(jīng)不是什么新鮮的東西,但基本上所有的軟件公司在產(chǎn)品發(fā)布到線(xiàn)上環(huán)境之后,所有來(lái)自外部的請(qǐng)求,都會(huì)經(jīng)過(guò)服務(wù)器廠(chǎng)商的防火墻,只有通過(guò)了防火墻這一層請(qǐng)求才能繼續(xù)往下進(jìn)行。
關(guān)于防火墻的作用,這里簡(jiǎn)單列舉如下:
·防止來(lái)自被保護(hù)區(qū)域外部的攻擊,保護(hù)易受攻擊的網(wǎng)絡(luò)服務(wù)資源和客戶(hù)資源;
·集中安全管理,通過(guò)集中的安全策略配置,以便統(tǒng)一管理和執(zhí)行安全政策;
·防止信息外泄和屏蔽有害信息,執(zhí)行安全檢查,嚴(yán)格控制進(jìn)出網(wǎng)絡(luò)的數(shù)據(jù),過(guò)濾和屏蔽有害信息,防止信息外泄;
·安全審計(jì)和告警,通過(guò)對(duì)網(wǎng)絡(luò)存取訪(fǎng)問(wèn)進(jìn)行監(jiān)控審計(jì),有效跟蹤各類(lèi)網(wǎng)絡(luò)活動(dòng),及時(shí)發(fā)現(xiàn)問(wèn)題和及時(shí)報(bào)警。
關(guān)于網(wǎng)關(guān),基本上所有的人都多少有一定的了解,網(wǎng)關(guān)在一個(gè)安全的系統(tǒng)架構(gòu)設(shè)計(jì)中的作用,可以說(shuō)是承上啟下,至關(guān)重要,大體來(lái)說(shuō),從安全的角度來(lái)講,主要體現(xiàn)在如下幾個(gè)方面:
拿 nginx 來(lái)說(shuō),如果后端的接口真實(shí)地址是:/API/v2/user/get/1,為了確保接口安全,屏蔽真實(shí)的地址,通過(guò)nginx 的反向代理之后,接口可能變成這樣:/platform/biz/API/v2/user/get/1。
從系統(tǒng)安全和系統(tǒng)可用性的角度講,為了確保系統(tǒng)的高可用性,通常應(yīng)用服務(wù)集群部署,這樣可以避免單節(jié)點(diǎn)壓力過(guò)大而造成業(yè)務(wù)高峰時(shí)系統(tǒng)不可用,有了網(wǎng)關(guān)這一層,就可以通過(guò)網(wǎng)關(guān)的配置動(dòng)態(tài)實(shí)現(xiàn)負(fù)載均衡,以達(dá)到均衡流量的效果,從而對(duì)系統(tǒng)過(guò)載形成防護(hù)。
以 nginx 來(lái)說(shuō),提供了可編程式的配置,通過(guò)編寫(xiě)腳本代碼,對(duì)經(jīng)過(guò) nginx 的請(qǐng)求進(jìn)行監(jiān)控,尤其是對(duì)于那些惡意刷接口的請(qǐng)求,可以很好的進(jìn)行識(shí)別,甚至可以在 nginx 這一層對(duì)那些惡意請(qǐng)求的 IP,IP 段進(jìn)行黑名單的設(shè)置,從而對(duì)后臺(tái)的服務(wù)進(jìn)行第一層的安全防護(hù)。
對(duì)一個(gè)系統(tǒng)來(lái)說(shuō),可用性已然成了系統(tǒng)是否穩(wěn)定的考量因素的重要標(biāo)準(zhǔn),當(dāng)業(yè)務(wù)高峰期時(shí),不管是外部的惡意請(qǐng)求,還是類(lèi)似搶單這樣的瞬間大流量來(lái)說(shuō),為了保障系統(tǒng)的整體可用性,必要的限流措施也是確保系統(tǒng)安全的重要手段,而網(wǎng)關(guān)作為承載系統(tǒng)流量的入口,在網(wǎng)關(guān)這一層做一定的限流管控是很有必要的。
在討論了架構(gòu)設(shè)計(jì)中的安全防護(hù)措施后,作為系統(tǒng)對(duì)外提供數(shù)據(jù)來(lái)源的核心后臺(tái)服務(wù)的 API 接口,關(guān)于 API 的安全考慮,許多開(kāi)發(fā)者在設(shè)計(jì)過(guò)程中尚未引起足夠的重視。以下是小編分享的一個(gè)有趣現(xiàn)象:在過(guò)去的工作經(jīng)歷中,甲方公司在項(xiàng)目驗(yàn)收時(shí),通常會(huì)對(duì)整個(gè)源碼進(jìn)行安全審計(jì),其中 API 接口的安全問(wèn)題,如 XSS 攻擊、CSRF 攻擊和接口被刷的風(fēng)險(xiǎn),常常是審計(jì)中最容易出問(wèn)題的部分。
接下來(lái),我們將探討針對(duì)這些問(wèn)題以及日常開(kāi)發(fā)中API 安全的一些規(guī)范性要求。
在當(dāng)前流行的微服務(wù)架構(gòu)中,后臺(tái) API 的訪(fǎng)問(wèn)邊界必須規(guī)范:
針對(duì)大平臺(tái),如 PaaS 平臺(tái),其由多個(gè)內(nèi)部服務(wù)組成,這些服務(wù)之間的調(diào)用(如 Dubbo 或 HTTP 調(diào)用)需要規(guī)范:
appName
這樣的標(biāo)識(shí)進(jìn)行認(rèn)證。對(duì)于登錄、獲取用戶(hù)信息等接口,需加密處理以防會(huì)話(huà)劫持:
前端請(qǐng)求時(shí),在 header 中添加 token 等參數(shù),進(jìn)行統(tǒng)一校驗(yàn)。更高級(jí)的安全可以混合定制化參數(shù)。
即使有統(tǒng)一的防護(hù)措施,對(duì)核心業(yè)務(wù) API 仍需額外防刷:
從安全角度,POST 請(qǐng)求比 GET 請(qǐng)求安全,建議當(dāng)查詢(xún)參數(shù)超過(guò)5個(gè)時(shí),封裝參數(shù)并使用 POST 請(qǐng)求。
雖然是基礎(chǔ),但參數(shù)校驗(yàn)是 API 安全的最后保障:
API是什么
API安全是什么
如何評(píng)估API 安全性
如何實(shí)施API 安全策略
7 大 REST API 安全威脅
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)