自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

防止接口被刷的八種方式

開(kāi)發(fā) 安全
本文描述了八中防止接口被刷的方式,其實(shí)看下來(lái)你會(huì)發(fā)現(xiàn),不管是哪一種,最后的目標(biāo)就是不要讓惡意請(qǐng)求訪問(wèn)到我們業(yè)務(wù)的接口。

如何防止系統(tǒng)被刷接口?

相信身為程序員的我們,在7-8年前智能手機(jī)還沒(méi)有普及的時(shí)候,那個(gè)時(shí)間QQ以及玩的很多游戲都是有VIP或各種特權(quán)的,大多數(shù)人應(yīng)該都有了解或者聽(tīng)說(shuō)過(guò)刷這個(gè)字。

刷的原理就是我們發(fā)送短信或者請(qǐng)求后,利用程序的響應(yīng)時(shí)間,事務(wù)處理結(jié)果以及網(wǎng)絡(luò)傳輸延遲,中間這個(gè)差值做事情。細(xì)節(jié)不在此說(shuō),大概意思理解就好。

隨著互聯(lián)網(wǎng)的發(fā)展,分布式系統(tǒng)的普及,系統(tǒng)的安全健壯讓這些漏洞變得不再可用。

再舉個(gè)例子,假設(shè)我們有一個(gè)積分簽到系統(tǒng),接收到一個(gè)請(qǐng)求就對(duì)這個(gè)請(qǐng)求參數(shù)代表的用戶進(jìn)行增加積分。如果我們不對(duì)接口的業(yè)務(wù)做處理,該漏洞就會(huì)被不良用心的人刷取積分。(假如哈,假如,現(xiàn)在應(yīng)該不會(huì)有這種寫(xiě)法了吧,這種都屬于業(yè)務(wù)的限制了,有的話該問(wèn)問(wèn)自己了??)

在這種需要進(jìn)行限制的接口中,常用的做法有時(shí)間限制(業(yè)務(wù)需要,每天簽到一次),或者次數(shù)限制(只可點(diǎn)擊5次),在或者2分鐘內(nèi)只能點(diǎn)擊1次這種限制。這些措施都是接口的業(yè)務(wù)處理,那么今天我們就來(lái)看下如何讓這些非法請(qǐng)求連業(yè)務(wù)處理邏輯這一步都進(jìn)不來(lái)呢?

被程序自動(dòng)化的惡意多次請(qǐng)求會(huì)給服務(wù)器帶來(lái)巨大的負(fù)載壓力,甚至導(dǎo)致系統(tǒng)崩潰,影響正常用戶的使用。

首先還是看下防止接口被惡意刷的8種方式。

1.防火墻

防火墻也是互聯(lián)網(wǎng)安全攻防中重要的屏障,我們通過(guò)配置訪問(wèn)規(guī)則,可以限制只有被允許的IP才可以進(jìn)行訪問(wèn)。

防火墻還可以識(shí)別和阻止DDoS攻擊,通過(guò)識(shí)別并過(guò)濾惡意流量請(qǐng)求,防火墻可以有效的防御,保護(hù)接口正常運(yùn)行。

2.用戶認(rèn)證

在調(diào)用接口之后,需要對(duì)接口中的身份信息進(jìn)行認(rèn)證和授權(quán),只有授權(quán)過(guò)的合法用戶才可繼續(xù)訪問(wèn)。

常用的有OAtuh2.0等標(biāo)準(zhǔn)協(xié)議,通過(guò)token的形式進(jìn)行身份驗(yàn)證,確保用戶已經(jīng)登陸或者已經(jīng)具備該接口的訪問(wèn)權(quán)限,從而限制接口的訪問(wèn)。

我們可以自定義一個(gè)注解,在注解上添加權(quán)限授權(quán)標(biāo)識(shí),并在網(wǎng)關(guān)上增加權(quán)限攔截器,對(duì)增加了該權(quán)限注解的接口進(jìn)行權(quán)限驗(yàn)證,只有匹配該接口所需要的權(quán)限才可以訪問(wèn)。

3.訪問(wèn)頻率

增加訪問(wèn)頻率限制,限制同一個(gè)用戶在一段時(shí)間內(nèi)的請(qǐng)求接口次數(shù)。我們可以根據(jù)用戶角色的不同設(shè)置不同的等級(jí)限制。

訪問(wèn)頻率這塊我們可以都適用動(dòng)態(tài)配置的,可以考慮一下兩點(diǎn)方向:

  • 訪問(wèn)策略限制可以配置調(diào)整。
  • 限制算法與業(yè)務(wù)影響最小,既能有效防止惡意請(qǐng)求,也不影響正常用戶訪問(wèn)。

4.驗(yàn)證碼

比如登陸時(shí)用的短信驗(yàn)證碼,頁(yè)面限制60秒發(fā)送一次,大大延長(zhǎng)用戶操作的時(shí)間,但是當(dāng)用戶刷新了頁(yè)面,對(duì)于當(dāng)前頁(yè)面來(lái)說(shuō),用戶還是可以繼續(xù)點(diǎn)擊發(fā)送短信驗(yàn)證碼,所以服務(wù)端我們也要做訪問(wèn)限制。

當(dāng)請(qǐng)求進(jìn)來(lái)后,以用戶手機(jī)號(hào)為key,判斷最近發(fā)送驗(yàn)證碼的時(shí)間,如果大于60s,就發(fā)送短信,反之拒絕。

服務(wù)端做限制,以手機(jī)號(hào)發(fā)送驗(yàn)證碼舉例,不僅要限制發(fā)送驗(yàn)證的頻率,還要限制每天同一個(gè)手機(jī)號(hào)最多發(fā)送幾次驗(yàn)證碼。

以用戶手機(jī)號(hào)以及當(dāng)天日期為key,增加當(dāng)天該手機(jī)號(hào)發(fā)送驗(yàn)證碼次數(shù),超過(guò)一定次數(shù)拒絕發(fā)送短信。

5.IP 白名單與黑名單

對(duì)于信任的IP地址直接加入白名單,對(duì)于明確知道惡意請(qǐng)求的 IP,直接加入黑名單。(如何知道是惡意請(qǐng)求,就是下一個(gè)手段,監(jiān)控)

白名單黑名單的配置我們可以使用配置中心,Nacos 或者 Apollo,這樣當(dāng)線上使用時(shí)可以動(dòng)態(tài)的增加刪除,使其動(dòng)態(tài)生效。

6.監(jiān)控

在系統(tǒng)中增加監(jiān)控系統(tǒng),對(duì)接口的請(qǐng)求記錄保存日志,通過(guò)對(duì)日志進(jìn)行分析,發(fā)現(xiàn)突發(fā)流量時(shí)使用限制訪問(wèn)頻率或者封禁IP等手段,然后同步發(fā)送短信或者郵件提醒管理員。

監(jiān)控的范圍最好是覆蓋廣,相當(dāng)于全接口的監(jiān)控,然后是實(shí)時(shí)、準(zhǔn)確,最好有可視化的監(jiān)控報(bào)告,幫助管理員或者運(yùn)維人員排查。

7.數(shù)據(jù)加密

為何能自動(dòng)化的使用程序刷接口,就是因?yàn)橥ㄟ^(guò)各種手段破解了我們接口所需要的參數(shù)以及認(rèn)證信息,那么我們對(duì)接口進(jìn)行加密就可以增加這個(gè)過(guò)程的難度,讓其再去破譯該接口就變的沒(méi)有那么容易。

加密有多種,首先可以數(shù)據(jù)加密,也就是傳的參數(shù),前后端約定加密算法。然后是使用HTTPS安全傳輸協(xié)議,對(duì)接口傳輸?shù)臄?shù)據(jù)進(jìn)行加密,防止數(shù)據(jù)被中間人竊取篡改,保證接口安全。

8.用戶行為分析

在監(jiān)控系統(tǒng)的基礎(chǔ)上,增加用戶分析,對(duì)用戶的特點(diǎn)行為進(jìn)行分析,發(fā)現(xiàn)異常行為時(shí)作出相應(yīng)的處理。但是需要確保不能影響到正常的用戶,也不能使用單一的條件進(jìn)行分析,需要多方位的,比如用戶的登錄設(shè)備、IP、時(shí)間點(diǎn)等。

總結(jié)

上文描述了8中防止接口被刷的方式,其實(shí)看下來(lái)你會(huì)發(fā)現(xiàn),不管是哪一種,最后的目標(biāo)就是不要讓惡意請(qǐng)求訪問(wèn)到我們業(yè)務(wù)的接口。其實(shí)還有一種,接口的冪等,但是這種就會(huì)造成服務(wù)器的負(fù)載壓力,對(duì)用戶的數(shù)據(jù)行為是不會(huì)造成影響的,相當(dāng)于資源浪費(fèi)了,所以也不是那么可取,下一篇我們就來(lái)聊一下MQ中消息重復(fù)消費(fèi)之冪等消費(fèi)。

責(zé)任編輯:趙寧寧 來(lái)源: 醉魚(yú)Java
相關(guān)推薦

2024-02-19 00:00:00

接口圖形驗(yàn)證碼

2019-01-21 13:14:37

2024-08-06 08:08:14

2021-08-07 05:05:30

接口Redis項(xiàng)目

2018-12-18 16:30:16

Commvault勒索軟件

2022-03-09 15:23:16

區(qū)塊鏈

2018-04-20 14:54:27

2010-08-24 13:01:37

2010-10-22 09:20:52

BUG

2023-10-09 14:13:27

建筑行業(yè)人工智能

2025-04-14 04:01:00

2018-09-25 14:21:08

2019-06-03 11:14:16

2019-06-03 12:02:37

2021-09-24 10:35:02

統(tǒng)一通信遠(yuǎn)程工作疫情

2023-09-07 11:29:36

API開(kāi)發(fā)

2010-09-08 15:35:35

2022-10-27 10:55:01

物聯(lián)網(wǎng)自動(dòng)化

2011-06-03 11:53:06

Spring接口

2014-06-05 09:58:21

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)