国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

機器多次惡意提交攻擊簡單防范

honhon / 837人閱讀

摘要:先說背景機器不斷的發送請求或者惡意提交,會給服務器造成很大壓力針對這種攻擊最優的策略是判斷提交次數,產生動態驗證碼,即判斷規定時間內重復發送達到次彈出驗證碼。

先說背景:機器不斷的發送請求或者惡意提交,會給服務器造成很大壓力;針對這種攻擊最優的策略是判斷提交次數,產生動態驗證碼,即判斷ip規定時間內重復發送達到N次彈出驗證碼。下面是小拽在實踐過程中一個簡單的識別ip,利用session記錄和防御的過程。

識別和校驗ip

過程如下;

識別ip

ip屬于白名單直接通過[白名單策略:內網ip+指定ip表]

利用session存儲ip的請求時間戳

校驗規定時間內ip的請求次數

采取相應的措施

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

    // 獲取環境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 環境ip
    if (!$this->isWhiteList($ip)) {
        $echo_str = "提交過于頻繁,請稍后再試!";
        // 構建ip的時間棧數據
        if (!is_array($_SESSION[$ip])) {
            $_SESSION[$ip] = array();
        }

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

            // session 保存時間為6小時。清理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內已經提交了3請求,禁止提交
            $post_interval_third = time() - $_SESSION[$ip][count($_SESSION[$ip]) - 3];
            if (isset($_SESSION[$ip][3]) && ($post_interval_third < 10)) {
                echo $echo_str;
                exit;
            }

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

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

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

白名單策略采用:內網ip放行和特定ip放行

/**
 * 檢驗是否存在于白名單中
 *
 * @param $ip    :校驗的ip
 * @return bool  :校驗結果
 */
function isWhiteList($ip){
    /**
     * 內網ip默認全部存在于白名單中
     */
    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);
}
防攻擊策略

小拽采用的比較簡單的策略,如上面代碼,實際過程中可以結合業務需求。

1s內禁止重復提交

5s內提交上限3次

60s內提交上限5次

6小時內提交上限10次

【轉載請注明:機器多次惡意提交攻擊簡單防范 | 靠譜崔小拽 】

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21307.html

相關文章

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

    摘要:禁止內聯腳本執行規則較嚴格,目前發現使用。合理使用上報可以及時發現,利于盡快修復問題。因為事件會從目標元素一層層冒泡至對象。允許給一個事件注冊多個監聽。表示在捕獲階段觸發,表示在冒泡階段觸發。 關于【Step-By-Step】 Step-By-Step (點擊進入項目) 是我于 2019-05-20 開始的一個項目,每個工作日發布一道面試題。每個周末我會仔細閱讀大家的答案,整理最一份...

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

    摘要:禁止內聯腳本執行規則較嚴格,目前發現使用。典型的攻擊流程受害者登錄站點,并保留了登錄憑證。站點接收到請求后,對請求進行驗證,并確認是受害者的憑證,誤以為是無辜的受害者發送的請求。攻擊完成,攻擊者在受害者不知情的情況下,冒充受害者完成了攻擊。 隨著互聯網的發展,各種Web應用變得越來越復雜,滿足了用戶的各種需求的同時,各種網絡安全問題也接踵而至。作為前端工程師的我們也逃不開這個問題,今天一起...

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

    摘要:禁止內聯腳本執行規則較嚴格,目前發現使用。典型的攻擊流程受害者登錄站點,并保留了登錄憑證。站點接收到請求后,對請求進行驗證,并確認是受害者的憑證,誤以為是無辜的受害者發送的請求。攻擊完成,攻擊者在受害者不知情的情況下,冒充受害者完成了攻擊。 隨著互聯網的發展,各種Web應用變得越來越復雜,滿足了用戶的各種需求的同時,各種網絡安全問題也接踵而至。作為前端工程師的我們也逃不開這個問題,今天...

    charles_paul 評論0 收藏0

發表評論

0條評論

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