無論網(wǎng)站,還是App目前基本都是基于api接口模式的開發(fā),那么api的安全就尤為重要了。目前攻擊最常見的就是“短信轟炸機(jī)”,由于短信接口驗(yàn)證是App,網(wǎng)站檢驗(yàn)用戶手機(jī)號(hào)最真實(shí)的途徑,使用短信驗(yàn)證碼在提供便利的同時(shí),也成了唄惡意攻擊的對象,那么如何才能防止被惡意調(diào)用呢?今天云服務(wù)商小編就帶大家一起了解下。
創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的嘉祥網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!1.圖形驗(yàn)證碼:
將圖形校驗(yàn)碼和手機(jī)驗(yàn)證碼進(jìn)行綁定,在用戶輸入手機(jī)號(hào)碼以后,需要輸入圖形校驗(yàn)碼成功后才可以觸發(fā)短信驗(yàn)證,這樣能比較有效的防止惡意攻擊。目前大部分應(yīng)用都是采用這種方式。
2.限定請求次數(shù):
在服務(wù)器端限定同IP,同設(shè)備,同時(shí)間范圍內(nèi)的接口請求次數(shù)。比如同一號(hào)碼重復(fù)發(fā)送的時(shí)間間隔,一般為60或120秒;設(shè)置每個(gè)IP每天的發(fā)送量;設(shè)置單個(gè)手機(jī)號(hào)每天的發(fā)送量。
3.流程條件限定:
將手機(jī)短信驗(yàn)證放在最后進(jìn)行,比如需要用戶必須注冊后,或者用不必須填寫了某些條件才能進(jìn)行短信驗(yàn)證。
4.歸屬地是否一致:
服務(wù)器端檢查用戶的IP所在地與手機(jī)號(hào)歸屬地是否匹配,如果不匹配則提示用戶手動(dòng)操作等。
5.服務(wù)器接口驗(yàn)證:
當(dāng)用戶登錄成功后,返回一個(gè)由Token簽名生成的秘鑰信息(Token可使用base64編碼和md5加密,可以放在請求的Header中),然后對每次后續(xù)請求進(jìn)行Token的封裝生成,服務(wù)器端在驗(yàn)證是否一致來判斷請求是否通過。
(1)常規(guī)的方法:用戶登陸后生成token,返回客戶端,然后服務(wù)器使用AOP攔截controller方法,校驗(yàn)token的有效性,每次token是一樣的;(2)用戶登陸后生成臨時(shí)token,存到服務(wù)器,并返回客戶端,客戶端下次請求時(shí)把此token傳到服務(wù)器,驗(yàn)證token是否有效,有效就登陸成功,并生成新的token返回給客戶端,讓客戶端在下一次請求的時(shí)候再傳回進(jìn)行判斷,如此重復(fù)。 這種方法有性能問題,但也有一個(gè)漏洞,如果用戶在一次請求后,還未進(jìn)行下一次請求就已被黑客攔截到登錄信息并進(jìn)行假冒登錄,他一樣可以登錄成功并使用戶強(qiáng)制下線,但這種方法已大大減少被假冒登錄的機(jī)會(huì)。(3)兩層token:一般第一次用賬號(hào)密碼登錄服務(wù)器會(huì)返回兩個(gè)token,時(shí)效長短不一樣,短的時(shí)效過了之后,發(fā)送時(shí)效長的token重新獲取一個(gè)短時(shí)效,如果都過期,那么就需要重新登錄了。當(dāng)然更復(fù)雜你還可以做三層token,按照業(yè)務(wù)分不同token。
6.采用https:
線上的api接口開啟https訪問,這樣做的話別人抓包的難度會(huì)提高很多,而且https需要秘鑰交換,可以在一定程度上鑒別是否偽造IP。
7.服務(wù)器端代理請求:
針對于網(wǎng)站,這也是解決跨域的方案之一,采用服務(wù)器代理可以有效的防止接口真實(shí)地址的暴露。
8.其它:
當(dāng)接口存在大量肉雞攻擊的時(shí)候,攻擊者也同樣容易暴露意圖,我們可以通過系統(tǒng)分析算法,讓攻擊者獲取不到有效數(shù)據(jù),提高攻擊成本。
總結(jié):
安全問題一直都是與攻擊者之間智斗勇的問題,只有不斷交鋒,不斷成長,當(dāng)然在網(wǎng)站前期部署的時(shí)候選用高防御服務(wù)器也是一個(gè)不錯(cuò)的預(yù)防方式。