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

資訊專欄INFORMATION COLUMN

機(jī)器多次惡意提交攻擊簡(jiǎn)單防范

honhon / 846人閱讀

摘要:先說(shuō)背景機(jī)器不斷的發(fā)送請(qǐng)求或者惡意提交,會(huì)給服務(wù)器造成很大壓力針對(duì)這種攻擊最優(yōu)的策略是判斷提交次數(shù),產(chǎn)生動(dòng)態(tài)驗(yàn)證碼,即判斷規(guī)定時(shí)間內(nèi)重復(fù)發(fā)送達(dá)到次彈出驗(yàn)證碼。

先說(shuō)背景:機(jī)器不斷的發(fā)送請(qǐng)求或者惡意提交,會(huì)給服務(wù)器造成很大壓力;針對(duì)這種攻擊最優(yōu)的策略是判斷提交次數(shù),產(chǎn)生動(dòng)態(tài)驗(yàn)證碼,即判斷ip規(guī)定時(shí)間內(nèi)重復(fù)發(fā)送達(dá)到N次彈出驗(yàn)證碼。下面是小拽在實(shí)踐過(guò)程中一個(gè)簡(jiǎn)單的識(shí)別ip,利用session記錄和防御的過(guò)程。

識(shí)別和校驗(yàn)ip

過(guò)程如下;

識(shí)別ip

ip屬于白名單直接通過(guò)[白名單策略:內(nèi)網(wǎng)ip+指定ip表]

利用session存儲(chǔ)ip的請(qǐng)求時(shí)間戳

校驗(yàn)規(guī)定時(shí)間內(nèi)ip的請(qǐng)求次數(shù)

采取相應(yīng)的措施

/**
 * 獲取和校驗(yàn)ip;同時(shí)防止短時(shí)間內(nèi)多次提交
 *
 * @notice        :彈出驗(yàn)證碼,需要替換掉echo $echo_str 即可。
 * @return string :返回校驗(yàn)成功的ip
 */
protected function getAndCheckIP()
{

    // 獲取環(huán)境ip
    if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
        $ip = getenv("HTTP_CLIENT_IP");
    else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
        $ip = getenv("HTTP_X_FORWARDED_FOR");
    else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
        $ip = getenv("REMOTE_ADDR");
    else if (isset($_SERVER["REMOTE_ADDR"]) && $_SERVER["REMOTE_ADDR"] && strcasecmp($_SERVER["REMOTE_ADDR"], "unknown"))
        $ip = $_SERVER["REMOTE_ADDR"];
    else
        $ip = "unknown";

    // check 環(huán)境ip
    if (!$this->isWhiteList($ip)) {
        $echo_str = "提交過(guò)于頻繁,請(qǐng)稍后再試!";
        // 構(gòu)建ip的時(shí)間棧數(shù)據(jù)
        if (!is_array($_SESSION[$ip])) {
            $_SESSION[$ip] = array();
        }

        if (isset($_SESSION[$ip][0])) {
            $_SESSION[$ip][] = time();

            // session 保存時(shí)間為6小時(shí)。清理session
            $post_interval_first = time() - $_SESSION[$ip][0];
            if ($post_interval_first > 21600) {
                $_SESSION[$ip] = array();
            }

            // 兩次提交小于1s,禁止提交
            $post_interval_pre = time() - $_SESSION[$ip][count($_SESSION[$ip]) - 3];
            if ($post_interval_pre < 1) {
                echo $echo_str;
                exit;
            };

            // 您在10s內(nèi)已經(jīng)提交了3請(qǐng)求,禁止提交
            $post_interval_third = time() - $_SESSION[$ip][count($_SESSION[$ip]) - 3];
            if (isset($_SESSION[$ip][3]) && ($post_interval_third < 10)) {
                echo $echo_str;
                exit;
            }

            // 您在1分鐘期間已經(jīng)提交了5請(qǐng)求,禁止提交
            $post_interval_fifth = time() - $_SESSION[$ip][count($_SESSION[$ip]) - 3];
            if (isset($_SESSION[$ip][5]) && ($post_interval_fifth < 60)) {
                echo $echo_str;
                exit;
            }

            // 6小時(shí)內(nèi)提交10次,禁止提交
            if (isset($_SESSION[$ip][10])) {
                echo $echo_str;
                exit;
            }
        } else {
            $_SESSION[$ip][] = time();
        }
    }

    return ($ip);
}
白名單策略

白名單策略采用:內(nèi)網(wǎng)ip放行和特定ip放行

/**
 * 檢驗(yàn)是否存在于白名單中
 *
 * @param $ip    :校驗(yàn)的ip
 * @return bool  :校驗(yàn)結(jié)果
 */
function isWhiteList($ip){
    /**
     * 內(nèi)網(wǎng)ip默認(rèn)全部存在于白名單中
     */
    if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)){
        return true;
    }

    // 是否在寫死的whitelist 里面
    return in_array($ip,$this->_WHTTE_LIST);
}
防攻擊策略

小拽采用的比較簡(jiǎn)單的策略,如上面代碼,實(shí)際過(guò)程中可以結(jié)合業(yè)務(wù)需求。

1s內(nèi)禁止重復(fù)提交

5s內(nèi)提交上限3次

60s內(nèi)提交上限5次

6小時(shí)內(nèi)提交上限10次

【轉(zhuǎn)載請(qǐng)注明:機(jī)器多次惡意提交攻擊簡(jiǎn)單防范 | 靠譜崔小拽 】

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

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

相關(guān)文章

  • 【Step-By-Step】一周面試題深入解析 / 周刊 03

    摘要:禁止內(nèi)聯(lián)腳本執(zhí)行規(guī)則較嚴(yán)格,目前發(fā)現(xiàn)使用。合理使用上報(bào)可以及時(shí)發(fā)現(xiàn),利于盡快修復(fù)問(wèn)題。因?yàn)槭录?huì)從目標(biāo)元素一層層冒泡至對(duì)象。允許給一個(gè)事件注冊(cè)多個(gè)監(jiān)聽(tīng)。表示在捕獲階段觸發(fā),表示在冒泡階段觸發(fā)。 關(guān)于【Step-By-Step】 Step-By-Step (點(diǎn)擊進(jìn)入項(xiàng)目) 是我于 2019-05-20 開(kāi)始的一個(gè)項(xiàng)目,每個(gè)工作日發(fā)布一道面試題。每個(gè)周末我會(huì)仔細(xì)閱讀大家的答案,整理最一份...

    hedge_hog 評(píng)論0 收藏0
  • 【面試篇】寒冬求職之你必須要懂的Web安全

    摘要:禁止內(nèi)聯(lián)腳本執(zhí)行規(guī)則較嚴(yán)格,目前發(fā)現(xiàn)使用。典型的攻擊流程受害者登錄站點(diǎn),并保留了登錄憑證。站點(diǎn)接收到請(qǐng)求后,對(duì)請(qǐng)求進(jìn)行驗(yàn)證,并確認(rèn)是受害者的憑證,誤以為是無(wú)辜的受害者發(fā)送的請(qǐng)求。攻擊完成,攻擊者在受害者不知情的情況下,冒充受害者完成了攻擊。 隨著互聯(lián)網(wǎng)的發(fā)展,各種Web應(yīng)用變得越來(lái)越復(fù)雜,滿足了用戶的各種需求的同時(shí),各種網(wǎng)絡(luò)安全問(wèn)題也接踵而至。作為前端工程師的我們也逃不開(kāi)這個(gè)問(wèn)題,今天一起...

    yeyan1996 評(píng)論0 收藏0
  • 【面試篇】寒冬求職之你必須要懂的Web安全

    摘要:禁止內(nèi)聯(lián)腳本執(zhí)行規(guī)則較嚴(yán)格,目前發(fā)現(xiàn)使用。典型的攻擊流程受害者登錄站點(diǎn),并保留了登錄憑證。站點(diǎn)接收到請(qǐng)求后,對(duì)請(qǐng)求進(jìn)行驗(yàn)證,并確認(rèn)是受害者的憑證,誤以為是無(wú)辜的受害者發(fā)送的請(qǐng)求。攻擊完成,攻擊者在受害者不知情的情況下,冒充受害者完成了攻擊。 隨著互聯(lián)網(wǎng)的發(fā)展,各種Web應(yīng)用變得越來(lái)越復(fù)雜,滿足了用戶的各種需求的同時(shí),各種網(wǎng)絡(luò)安全問(wèn)題也接踵而至。作為前端工程師的我們也逃不開(kāi)這個(gè)問(wèn)題,今天...

    charles_paul 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<