如何防止api接口被惡意調用或攻擊


無論網站,還是App目前基本都是基於api接口模式的開發,那么api的安全就尤為重要了。目前攻擊最常見的就是“短信轟炸機”,由於短信接口驗證是App,網站檢驗用戶手機號最真實的途徑,使用短信驗證碼在提供便利的同時,也成了唄惡意攻擊的對象,那么如何才能防止被惡意調用呢?

1.圖形驗證碼:

將圖形校驗碼和手機驗證碼進行綁定,在用戶輸入手機號碼以后,需要輸入圖形校驗碼成功后才可以觸發短信驗證,這樣能比較有效的防止惡意攻擊。目前大部分應用都是采用這種方式。

2.限定請求次數:

在服務器端限定同IP,同設備,同時間范圍內的接口請求次數。比如同一號碼重復發送的時間間隔,一般為60或120秒;設置每個IP每天最大的發送量;設置單個手機號每天的最大發送量。

3.流程條件限定:

將手機短信驗證放在最后進行,比如需要用戶必須注冊后,或者用不必須填寫了某些條件才能進行短信驗證。

4.歸屬地是否一致:

服務器端檢查用戶的IP所在地與手機號歸屬地是否匹配,如果不匹配則提示用戶手動操作等。

5.服務器接口驗證:

當用戶登錄成功后,返回一個由Token簽名生成的秘鑰信息(Token可使用base64編碼和md5加密,可以放在請求的Header中),然后對每次后續請求進行Token的封裝生成,服務器端在驗證是否一致來判斷請求是否通過。

(1)常規的方法:用戶登陸后生成token,返回客戶端,然后服務器使用AOP攔截controller方法,校驗token的有效性,每次token是一樣的;
(2)用戶登陸后生成臨時token,存到服務器,並返回客戶端,客戶端下次請求時把此token傳到服務器,驗證token是否有效,有效就登陸成功,並生成新的token返回給客戶端,讓客戶端在下一次請求的時候再傳回進行判斷,如此重復。 這種方法有性能問題,但也有一個漏洞,如果用戶在一次請求后,還未進行下一次請求就已被黑客攔截到登錄信息並進行假冒登錄,他一樣可以登錄成功並使用戶強制下線,但這種方法已大大減少被假冒登錄的機會。
(3)兩層token:一般第一次用賬號密碼登錄服務器會返回兩個token,時效長短不一樣,短的時效過了之后,發送時效長的token重新獲取一個短時效,如果都過期,那么就需要重新登錄了。當然更復雜你還可以做三層token,按照業務分不同token。

6.采用https:

線上的api接口開啟https訪問,這樣做的話別人抓包的難度會提高很多,而且https需要秘鑰交換,可以在一定程度上鑒別是否偽造IP。

7.服務器端代理請求:

針對於網站,這也是解決跨域的方案之一,采用服務器代理可以有效的防止接口真實地址的暴露。

8.其它:

當接口存在大量肉雞攻擊的時候,攻擊者也同樣容易暴露意圖,我們可以通過系統分析算法,讓攻擊者獲取不到有效數據,提高攻擊成本。

總結:

安全問題一直都是與攻擊者之間智斗勇的問題,沒有一勞永逸的解決方法,只有不斷交鋒,不斷成長

 

參考鏈接:https://www.cnblogs.com/WeidLang/p/9511164.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM