日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

你開放的接口真的就很安全嗎,看看有沒有做到如下幾點

1.請求身份驗證

2.請求參數(shù)校驗

3.請求是否唯一

4.請求次數(shù)限制

請求身份驗證
基于AccessKey:為接口調(diào)用放分配AccessKey和SecretKey(不參與傳輸,只用于本地接口加密,不能泄露)

基于token身份驗證:
1.用戶登錄提供認(rèn)證信息(如:賬號密碼)服務(wù)器驗證成功后將用戶信息保存到token內(nèi)并設(shè)置有效期,再返回token給調(diào)用方
2.調(diào)用方保存token,并在有效期內(nèi)重新?lián)Q取token,保證token是有效的
3.服務(wù)器驗證token有效性,無效則攔截請求返回錯誤信息,反之則從token內(nèi)獲取用戶信息進(jìn)行后續(xù)操作

請求參數(shù)校驗
1.校驗參數(shù)合理性(如:參數(shù)類型,參數(shù)長度,參數(shù)值校驗)
2.防止XSS,SQL注入(解決方案:過濾敏感字符或直接返回錯誤信息)
3.校驗參數(shù)可靠性是否被篡改(可以將參數(shù)以特定格式排列+秘鑰組成字符串,在進(jìn)行MD5或SHA簽名)

請求是否唯一
前面第3點解決了請求參數(shù)被篡改的隱患,但是還存在著重復(fù)使用請求參數(shù)偽造二次請求的隱患

timestamp+nonce方案

nonce指唯一的隨機(jī)字符串 ,用來標(biāo)識每個被簽名的請求。通過為每個請求提供一個唯一的標(biāo)識符,服務(wù)器能夠防止請求被多次使用(記錄所有用過的nonce以阻止它們被二次使用)。

然而,對服務(wù)器來說永久存儲所有接收到的nonce的代價是非常大的。可以使用timestamp來優(yōu)化nonce的存儲 。

假設(shè)允許客戶端和服務(wù)端最多能存在15分鐘的時間差,同時追蹤記錄在服務(wù)端的nonce集合。當(dāng)有新的請求進(jìn)入時,首先檢查攜帶的timestamp是否在15分鐘內(nèi),如超出時間范圍,則拒絕,然后查詢攜帶的nonce,如存在已有集合,則拒絕。否則,記錄該nonce,并刪除集合內(nèi)時間戳大于15分鐘的nonce(可以使用redis的expire,新增nonce的同時設(shè)置它的超時失效時間為15分鐘)。

請求次數(shù)限制

某些資源我們需要限制用戶的請求次數(shù),同時也為了防止非人為操作可能導(dǎo)致系統(tǒng)的崩潰
實現(xiàn)思路如下:
假如我們允許用戶每秒鐘最多10次請求,超過10次則返回“手速太快了,慢點把。。”
這里我們使用redis輔助我們實現(xiàn):

以用戶IP為key,請求次數(shù)為value,有效時間為1秒
用戶在每秒的第一次訪問的時候,此時我們的redis是沒有key為用戶ip的數(shù)據(jù)的(因為失效了,或者第一次請求)所以我們要初始化當(dāng)前請求用戶的ip為keyvalue為0到redis數(shù)據(jù)庫

當(dāng)用戶在1s內(nèi)再次發(fā)起請求我們就將此ip的請求次數(shù)+1,并判斷請求次數(shù)是否已近>=10
>=10則返回給用戶手速太快了!請稍后重試..否則繼續(xù)執(zhí)行后續(xù)操作

具體實現(xiàn)代碼如下:

 Boolean hasIp = redisUtil.hasKey(key);
if (!hasIp) {
            //初始化ip=0
            redisUtil.setEx(key, "0", 1, TimeUnit.SECONDS);
            return true;
 }
 int reqCount = 0;
        String s = redisUtil.get(key);
        if (!StringUtils.isEmpty(s)) {
            reqCount = Integer.parseInt(s);
        }
     
        if (reqCount >= 10) {
            //請求次數(shù)大于10限制訪問

            throw new ApiRRException("手速太快了!請稍后重試..");
        }
//對請求次數(shù)++
        redisUtil.setEx(key, (reqCount + 1) + "", 1, TimeUnit.SECONDS);

分享到:
標(biāo)簽:接口 API
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定