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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

接口錯(cuò)誤處理:

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


接口過(guò)載保護(hù):

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

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

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

,就會(huì)返回503錯(cuò)誤。HttpLimitConnModul用來(lái)限制單個(gè)ip的并發(fā)連接數(shù),使用

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

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

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

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

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