成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

工作記錄 >> 登錄短信驗(yàn)證碼防刷解決思路

whataa / 2906人閱讀

摘要:不過今天寫的沒有上面說的那么高大,只是一個小小的防刷解決思路。這是工作中經(jīng)常遇到的在此僅做一個記錄,以便回顧。同一個限制一分鐘最多獲取次超過次則鎖定小時,鎖定期間獲取短信需加圖片驗(yàn)證碼收到這個需求利用做了簡單的限流防刷功能。

一、寫在前面

在互聯(lián)網(wǎng)的發(fā)展史上,安全總是一個繞不開話題, 你有安全盾、我有破盾矛。所謂道高一尺、魔高一丈,不過互聯(lián)網(wǎng)安全也正是在這種攻防中慢慢的發(fā)展起來的。

不過今天寫的沒有上面說的那么高大,只是一個小小的防刷解決思路。

這是工作中經(jīng)常遇到的、在此僅做一個記錄,以便回顧。

如有不嚴(yán)謹(jǐn)或者不完善的地方,歡迎指正 ~謝謝~

二、場景引入、問題凸顯

場景: 在我們給 xx 做的區(qū)塊鏈共享出行平臺中區(qū)塊鏈瀏覽器系統(tǒng)的登錄是以用戶的手機(jī)號+驗(yàn)證碼來登錄的。

因是內(nèi)部用戶使用、在登錄這塊也沒做特殊的安全處理,導(dǎo)致在測試時被我們的測試小哥給刷爆了(在這給測試小哥點(diǎn)個贊)。

到這我們必然的收到一個bug了,業(yè)務(wù)期望。

1: 同一個ip限制一分鐘最多獲取5次

2: 超過5次則鎖定1小時,鎖定期間獲取短信需加圖片驗(yàn)證碼

收到這個需求、利用Redis做了簡單的限流防刷功能。

三、解決方案

首先分析需求,

1: 對同一IP做限制

2: 對單位時間內(nèi)次數(shù)做限制

利用Redis來實(shí)現(xiàn)思路

1: 一個獲取短信驗(yàn)證碼請求過來我們首先的判斷此IP是否已經(jīng)被鎖定(單位時間內(nèi)超過了限定的訪問次數(shù))

2: 如果未被鎖定則判斷此IP是否是首次訪問,如果是則給此IP加個生命周期以及記錄訪問次數(shù)。

3: 如果不是首次訪問,則判斷單位時間內(nèi)是否符合限制要求。

完成這三不我們需要在 redis 中定義三個KEY

msg_lock_key_{ip} 記錄次IP已被鎖定

msg_time_key_{ip} 記錄單位時間內(nèi)IP

msg_counter_key_{ip} 記錄單位時間內(nèi)IP訪問次數(shù)

到這就直接上一段代碼吧,

public boolean checkMsgFrequency(String remotIp) {
        String romteIpString = remotIp.replace(".", "");

        // 1: 判斷此ip是否已經(jīng)被限制
        String msgLockKey = Constants.API_MSG_LOCK_KEY + romteIpString;
        if (jedis.exists(msgLockKey)) {
            // 此ip已經(jīng)被鎖住
            logger.info("此Ip[{}]以超過規(guī)定訪問頻率key:{}", remotIp, msgLockKey);
            return false;
        }

        // 2: 判斷此ip是否在規(guī)定的時間內(nèi)訪問過
        String msgTimeKey = Constants.API_MSG_TIME_KEY + romteIpString;
        String msgCounterKey = Constants.API_MSG_COUNTER_KEY + romteIpString;
        // key 不存在
        if (!jedis.exists(msgTimeKey)) {
            // 加入緩存
            jedis.setEx(msgTimeKey, "0", imageCode.getLimitTime());
            jedis.setEx(msgCounterKey, "1", imageCode.getLimitTime());
        }

        if (jedis.exists(msgTimeKey) && (jedis.incrBy(msgCounterKey, 1) > imageCode.getLimitCounter())) {
            logger.info("此Ip[{}]以超過規(guī)定訪問頻率、進(jìn)行枷鎖key:{}", remotIp, msgTimeKey);
            jedis.setEx(msgLockKey, "0", imageCode.getLimitlockTime());
            return false;
        }
        return true;
    }

這是一個簡單的代碼實(shí)現(xiàn), 邏輯就是這個邏輯,實(shí)現(xiàn)方式很多種。

你可以使用spring AOP + 自定義注解對邏輯進(jìn)行分裝。

也可以使用Redis + lua腳本對上述三步邏輯進(jìn)行分裝。

這個就看個人,重要的的理解實(shí)現(xiàn)的思路, 實(shí)現(xiàn)方式千萬種總有一種是適合你的。

四、總結(jié)

對稀有資源的限流防刷,一般對單位時間的訪問頻率或者次數(shù)的限制。

我們主要是理解其解決問題的思路, 而不是記住實(shí)現(xiàn)代碼。

主要思路:

1: 查看針對次請求(IP 或者 uid) 對當(dāng)前請求資源是否已被鎖定。

2: 如果沒有被鎖定,則給此請求加生命周期(也就是一個限制時間單位),同時記錄訪問次數(shù)。

3: 則判斷此請求是否達(dá)到鎖定條件

大致思想就是這三步。

此記錄為加深自己記憶,同時以便溫故,若能幫到你,萬分高興。

如有不對的地方歡迎留言指正 謝謝!

如您有更好的思路歡迎交流

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/74705.html

相關(guān)文章

  • 無間盾反欺詐系統(tǒng)UIW正式上線

    摘要:產(chǎn)品簡介無間盾是一款驗(yàn)證碼產(chǎn)品,提供了拖動點(diǎn)選兩種形式的驗(yàn)證碼。計費(fèi)周期服務(wù)點(diǎn)數(shù)具有年有效期,以最近次購買次數(shù)為準(zhǔn)?!井a(chǎn)品簡介】無間盾是一款驗(yàn)證碼產(chǎn)品,提供了拖動、點(diǎn)選兩種形式的驗(yàn)證碼?;谏锏男袨樘卣?,結(jié)合人工智能技術(shù),在降低用戶操作的難度的同時,有效防范羊毛黨、垃圾注冊、刷單、惡意評論、撞庫等業(yè)務(wù)風(fēng)險,保障業(yè)務(wù)的安全性,降低黑產(chǎn)團(tuán)伙、自動化工具等欺詐行為帶來的業(yè)務(wù)損失?!緫?yīng)用場景】1、...

    ernest.wang 評論0 收藏0
  • 當(dāng)我們談?wù)?em>驗(yàn)證碼時,我們到底在談?wù)撌裁矗?/b>

    摘要:在次失敗后,第四次請求,就返回錯誤文案驗(yàn)證碼連續(xù)錯誤三次,請重新獲取短信驗(yàn)證碼還有一個需要思考的維度。一般來說,短信驗(yàn)證碼會有分鐘的有效期。 前言: 現(xiàn)如今登錄用手機(jī)驗(yàn)證碼登錄是越來越常見了。雖然會增加成本,不過對用戶體驗(yàn)的提升還是很有幫助的。那么,當(dāng)產(chǎn)品經(jīng)理對開發(fā)說,來按照這個原型給我搞個短信驗(yàn)證碼登錄的時候。我們作為研發(fā),應(yīng)該想些什么?showImg(https://upload-...

    妤鋒シ 評論0 收藏0
  • 大話后端開發(fā)的奇淫技巧大集合

    摘要:,大家好,很榮幸有這個機(jī)會可以通過寫博文的方式,把這些年在后端開發(fā)過程中總結(jié)沉淀下來的經(jīng)驗(yàn)和設(shè)計思路分享出來模塊化設(shè)計根據(jù)業(yè)務(wù)場景,將業(yè)務(wù)抽離成獨(dú)立模塊,對外通過接口提供服務(wù),減少系統(tǒng)復(fù)雜度和耦合度,實(shí)現(xiàn)可復(fù)用,易維護(hù),易拓展項(xiàng)目中實(shí)踐例子 Hi,大家好,很榮幸有這個機(jī)會可以通過寫博文的方式,把這些年在后端開發(fā)過程中總結(jié)沉淀下來的經(jīng)驗(yàn)和設(shè)計思路分享出來 模塊化設(shè)計 根據(jù)業(yè)務(wù)場景,將業(yè)務(wù)...

    CloudwiseAPM 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<