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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

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

2 回答

?
守著星空守著你

TA貢獻1799條經(jīng)驗 獲得超8個贊

為每個secret維護一個長度為100的隊列
當隊列長度為100的時候,取出隊列頭
判斷時間是否超過1分鐘,則accept
如果不足1分鐘則deny
然后shift和push隊列即可

查看完整回答
反對 回復 2018-10-14
?
達令說

TA貢獻1821條經(jīng)驗 獲得超6個贊

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

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

查看完整回答
反對 回復 2018-10-14
  • 2 回答
  • 0 關注
  • 1955 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號