首頁技術(shù)文章正文

APP接口安全設(shè)計(jì)要點(diǎn)

更新時(shí)間:2018-09-30 來源:黑馬程序員 瀏覽量:

請求合法性校驗(yàn):

請求合法性校驗(yàn)主要就是指如何避免API被非法的調(diào)用,比如系統(tǒng)里面有一個短信接口,就要考慮如何避免這個短信接口不被短信轟炸機(jī)濫用,可以采用的方式有以下幾種:

1. 驗(yàn)證碼,驗(yàn)證碼主要用于防范惡意注冊、惡意破解密碼、惡意灌水等非法操作,驗(yàn)證碼可以使用Google的CAPTCHA解決方案。

2. Token令牌,Token主要用于自動登錄,也就是在不需要用戶頻繁登錄的情況下保證訪問的合法性。常見的流程是使用用戶名和密碼登陸后,服務(wù)端返回一個token,后續(xù)客戶端每次方法都帶上這個token,當(dāng)這個token超過一定的時(shí)間(token有效期)沒有被使用,則要求客戶端重新輸入用戶名和密碼重新獲取token,服務(wù)端也通過請求的IP地址等一些信息判斷客戶端的網(wǎng)絡(luò)環(huán)境和設(shè)備環(huán)境是否發(fā)生變化,如果發(fā)生變化,也要求客戶端重新輸入用戶名和密碼,重新獲取token。

3. IP、MAC地址限制,只允許某一個MAC地址、IP或IP段的客戶端進(jìn)行訪問請求,只能一定程度上起到防范作用。

4. User-Agent和Referer限制,只能一定程度上起到防范作用。

數(shù)據(jù)合法性校驗(yàn):

數(shù)據(jù)合法性的校驗(yàn)主要是為了避免異常數(shù)據(jù)和注入攻擊。

1. 不依賴客戶端的數(shù)據(jù)校驗(yàn),不管客戶端有沒有進(jìn)行數(shù)據(jù)校驗(yàn),服務(wù)端都要做合法性校驗(yàn)。

2. 用白名單的方式驗(yàn)證數(shù)據(jù)合法性,也就是根據(jù)一系列已知的正確值或規(guī)則來驗(yàn)證請求數(shù)據(jù),不嘗試檢驗(yàn)?zāi)承┨囟ǖ腻e誤。

數(shù)據(jù)加密:

數(shù)據(jù)加密主要是指對敏感數(shù)據(jù)進(jìn)行加密,避免因網(wǎng)絡(luò)傳輸過程中的竊聽和抓包造成敏感數(shù)據(jù)泄露,常見方法主要由:

1. 使用HTTPS協(xié)議。

2. 對敏感數(shù)據(jù)采用秘鑰進(jìn)行加密和解密。

接口錯誤處理:

接口錯誤處理主要是值對接口的返回結(jié)果進(jìn)行編碼,制定統(tǒng)一的錯誤返回編碼,避免因接口錯誤和異常等原因造成堆棧信息泄露。


接口過載保護(hù):

接口過載保護(hù)是指對接口訪問頻率設(shè)置閾值,超出閾值后不予處理,直接返回錯誤碼,可以一定程度上防止CC攻擊,過載保護(hù)可以通過Web服務(wù)器進(jìn)行控制,也可以通過代碼進(jìn)行控制。

1. Nginx可以通過HttpLimitReqModul來限制單位時(shí)間內(nèi)連接數(shù)的模塊,使用

limit_req_zone和limit_req指令配合使用來達(dá)到限制。 一旦并發(fā)連接超過指定數(shù)量

,就會返回503錯誤。HttpLimitConnModul用來限制單個ip的并發(fā)連接數(shù),使用

limit_zone和limit_conn指令這兩個模塊的區(qū)別前一個是對一段時(shí)間內(nèi)的連接數(shù)限制

,后者是對同一時(shí)刻的連接數(shù)限制。

2. 可以通過代碼的方式來判斷,最好基于Redis計(jì)數(shù)器或者服務(wù)端緩存,避免對性能造成影響。

作者:黑馬程序員軟件測試培訓(xùn)學(xué)院
首發(fā):http://special.itheima.com/

分享到:
在線咨詢 我要報(bào)名
和我們在線交談!