第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

怎么保證對(duì)外暴露接口的安全性(調(diào)用頻率限制)

怎么保證對(duì)外暴露接口的安全性(調(diào)用頻率限制)

紅糖糍粑 2018-10-05 11:39:00
如何限制接口調(diào)用者對(duì)接口的調(diào)用頻率?問(wèn)題:對(duì)某個(gè)對(duì)外暴露的接口加一個(gè)限制:調(diào)用者一分鐘之內(nèi)調(diào)用次數(shù)不能超過(guò)100次,如果超過(guò)100次就直接返回給調(diào)用者失敗的信息。給調(diào)用者一個(gè)SECRET,每次調(diào)用者需要調(diào)用接口的時(shí)候,都需要把這個(gè)SECRET帶過(guò)來(lái)(為了安全需要對(duì)key進(jìn)行一系列加密的措施)一個(gè)SECRET就代表一個(gè)調(diào)用者,把相應(yīng)的SECRET的調(diào)用次數(shù)放入緩存中(必須確保次數(shù)增加的原子性),并且把SECRET當(dāng)做緩存的SECRET(這里如果區(qū)分方法的話,可以把方法和KEY做一次加密)。這里主要的難點(diǎn)就是,如何判斷調(diào)用者1分鐘之內(nèi)調(diào)用次數(shù)是否超過(guò)100?也就是很難確實(shí)這個(gè)1分鐘的開(kāi)始時(shí)間。我現(xiàn)在的想法是:分別把當(dāng)前秒調(diào)用的次數(shù)存入緩存。比如說(shuō),當(dāng)前調(diào)用者調(diào)用次數(shù)為3,那么我就往緩存中加入KEY=SECRET_1,VALUE=3;然后調(diào)用者在第二秒調(diào)用的次數(shù)為4,那么就往緩存中加入KEY=SECRET_2,VALUE=3;如此循環(huán),當(dāng)循環(huán)到61秒的時(shí)候替換KEY=SECRET_1中得VAALUE,每次調(diào)用的時(shí)候計(jì)算SECRET_1~SECRET_60的值來(lái)判斷調(diào)用次數(shù),是否超過(guò)100次。(這里具體一秒鐘調(diào)用幾次,需要通過(guò)時(shí)間戳來(lái)算出是第幾秒。這里以60秒為時(shí)間周期,并且以秒為一個(gè)時(shí)間單位,當(dāng)然如果要求不是很準(zhǔn)確的話,時(shí)間單位可以調(diào)大一點(diǎn))問(wèn)題 請(qǐng)問(wèn)有沒(méi)有別的更好方法或者想法可以實(shí)現(xiàn)這個(gè)調(diào)用頻率的限制?Update:基于令牌桶的開(kāi)放平臺(tái)限流框架:limiter,持續(xù)開(kāi)發(fā)中...
查看完整描述

2 回答

?
守著星空守著你

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊

為每個(gè)secret維護(hù)一個(gè)長(zhǎng)度為100的隊(duì)列
當(dāng)隊(duì)列長(zhǎng)度為100的時(shí)候,取出隊(duì)列頭
判斷時(shí)間是否超過(guò)1分鐘,則accept
如果不足1分鐘則deny
然后shift和push隊(duì)列即可

查看完整回答
反對(duì) 回復(fù) 2018-10-14
?
達(dá)令說(shuō)

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊

nginx的limit_req_zone就符合你想要的這種需求,它是使用令牌桶算法的.具體你可以看一下.

https://img1.sycdn.imooc.com//5bc2f6360001ea2607620500.jpg

查看完整回答
反對(duì) 回復(fù) 2018-10-14
  • 2 回答
  • 0 關(guān)注
  • 1926 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)