防止程序接口被刷的8種方式
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
如何防止系統(tǒng)被刷接口? 相信身為程序員的我們,在7-8年前智能手機(jī)還沒有普及的時候,那個時間QQ以及玩的很多游戲都是有VIP或各種特權(quán)的,大多數(shù)人應(yīng)該都有了解或者聽說過刷這個字。
隨著互聯(lián)網(wǎng)的發(fā)展,分布式系統(tǒng)的普及,系統(tǒng)的安全健壯讓這些漏洞變得不再可用。 再舉個例子,假設(shè)我們有一個積分簽到系統(tǒng),接收到一個請求就對這個請求參數(shù)代表的用戶進(jìn)行增加積分。如果我們不對接口的業(yè)務(wù)做處理,該漏洞就會被不良用心的人刷取積分。(假如哈,假如,現(xiàn)在應(yīng)該不會有這種寫法了吧,這種都屬于業(yè)務(wù)的限制了,有的話該問問自己了😂) 在這種需要進(jìn)行限制的接口中,常用的做法有時間限制(業(yè)務(wù)需要,每天簽到一次),或者次數(shù)限制(只可點擊5次),在或者2分鐘內(nèi)只能點擊1次這種限制。這些措施都是接口的業(yè)務(wù)處理,那么今天我們就來看下如何讓這些非法請求連業(yè)務(wù)處理邏輯這一步都進(jìn)不來呢?
首先還是看下防止接口被惡意刷的8種方式。 1、防火墻防火墻也是互聯(lián)網(wǎng)安全攻防中重要的屏障,我們通過配置訪問規(guī)則,可以限制只有被允許的IP才可以進(jìn)行訪問。 防火墻還可以識別和阻止DDoS攻擊,通過識別并過濾惡意流量請求,防火墻可以有效的防御,保護(hù)接口正常運行。 2、用戶認(rèn)證在調(diào)用接口之后,需要對接口中的身份信息進(jìn)行認(rèn)證和授權(quán),只有授權(quán)過的合法用戶才可繼續(xù)訪問。 常用的有OAtuh2.0等標(biāo)準(zhǔn)協(xié)議,通過token的形式進(jìn)行身份驗證,確保用戶已經(jīng)登陸或者已經(jīng)具備該接口的訪問權(quán)限,從而限制接口的訪問。 我們可以自定義一個注解,在注解上添加權(quán)限授權(quán)標(biāo)識,并在網(wǎng)關(guān)上增加權(quán)限攔截器,對增加了該權(quán)限注解的接口進(jìn)行權(quán)限驗證,只有匹配該接口所需要的權(quán)限才可以訪問。 3、訪問頻率增加訪問頻率限制,限制同一個用戶在一段時間內(nèi)的請求接口次數(shù)。我們可以根據(jù)用戶角色的不同設(shè)置不同的等級限制。 訪問頻率這塊我們可以都適用動態(tài)配置的,可以考慮一下兩點方向:
4、驗證碼比如登陸時用的短信驗證碼,頁面限制60秒發(fā)送一次,大大延長用戶操作的時間,但是當(dāng)用戶刷新了頁面,對于當(dāng)前頁面來說,用戶還是可以繼續(xù)點擊發(fā)送短信驗證碼,所以服務(wù)端我們也要做訪問限制。
服務(wù)端做限制,以手機(jī)號發(fā)送驗證碼舉例,不僅要限制發(fā)送驗證的頻率,還要限制每天同一個手機(jī)號最多發(fā)送幾次驗證碼。
5、IP 白名單與黑名單對于信任的IP地址直接加入白名單,對于明確知道惡意請求的 IP,直接加入黑名單。(如何知道是惡意請求,就是下一個手段,監(jiān)控) 白名單黑名單的配置我們可以使用配置中心,Nacos 或者 Apollo,這樣當(dāng)線上使用時可以動態(tài)的增加刪除,使其動態(tài)生效。 6、監(jiān)控在系統(tǒng)中增加監(jiān)控系統(tǒng),對接口的請求記錄保存日志,通過對日志進(jìn)行分析,發(fā)現(xiàn)突發(fā)流量時使用限制訪問頻率或者封禁IP等手段,然后同步發(fā)送短信或者郵件提醒管理員。 監(jiān)控的范圍最好是覆蓋廣,相當(dāng)于全接口的監(jiān)控,然后是實時、準(zhǔn)確,最好有可視化的監(jiān)控報告,幫助管理員或者運維人員排查。 7、數(shù)據(jù)加密為何能自動化的使用程序刷接口,就是因為通過各種手段破解了我們接口所需要的參數(shù)以及認(rèn)證信息,那么我們對接口進(jìn)行加密就可以增加這個過程的難度,讓其再去破譯該接口就變的沒有那么容易。 加密有多種,首先可以數(shù)據(jù)加密,也就是傳的參數(shù),前后端約定加密算法。然后是使用HTTPS安全傳輸協(xié)議,對接口傳輸?shù)臄?shù)據(jù)進(jìn)行加密,防止數(shù)據(jù)被中間人竊取篡改,保證接口安全。 8、用戶行為分析在監(jiān)控系統(tǒng)的基礎(chǔ)上,增加用戶分析,對用戶的特點行為進(jìn)行分析,發(fā)現(xiàn)異常行為時作出相應(yīng)的處理。但是需要確保不能影響到正常的用戶,也不能使用單一的條件進(jìn)行分析,需要多方位的,比如用戶的登錄設(shè)備、IP、時間點等。 總結(jié)上文描述了8中防止接口被刷的方式,其實看下來你會發(fā)現(xiàn),不管是哪一種,最后的目標(biāo)就是不要讓惡意請求訪問到我們業(yè)務(wù)的接口。其實還有一種,接口的冪等,但是這種就會造成服務(wù)器的負(fù)載壓力,對用戶的數(shù)據(jù)行為是不會造成影響的,相當(dāng)于資源浪費了,所以也不是那么可取,下一篇我們就來聊一下MQ中消息重復(fù)消費之冪等消費。 該文章在 2024/7/25 12:47:08 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |