發佈日期:

不需要驗證碼!教你用「蜜罐技術」阻擋 99% 機器人攻擊

Views: 0

為什麼您的 WordPress 需要「隱形防禦」?

每分鐘都有數以萬計的自動化腳本在嘗試入侵 WordPress 網站。傳統的圖形驗證碼雖然有效,卻嚴重損害了使用者的登入體驗。
忠碁科技 設計了一套非侵入式的網站 WP-LOGIN 防護機制,透過「行為特徵」來辨識人類與機器,讓您的登入頁面保持潔淨卻固若金湯。


核心防禦邏輯:三重防線

  1. 時間差驗證:利用人類輸入資料的基本生理限制,阻擋瞬間提交的自動腳本。
  2. 蜜罐陷阱 (Honeypot):在表單中埋入「人類看不見、機器人必填」的虛擬欄位。
  3. 環境偵測:透過 JavaScript 動態注入驗證碼,確認操作者具備真實瀏覽器的運行環境。

實作範例:將代碼加入您的 functions.php

請注意:為了確保防禦效果,建議您將代碼中標註為 “your_custom_name” 的部分,自行修改為隨機的英文字串。


// 1. 時間差驗證:記錄使用者開啟頁面的時間
add_action('login_form', 'tj_add_timestamp');
function tj_add_timestamp() {
    echo '<input type="hidden" name="login_start_ts" value="' . esc_attr(time()) . '" />';
}

// 2. 蜜罐陷阱:建立一個只有機器人才會填寫的欄位
add_action('login_form', 'tj_add_honeypot_field');
function tj_add_honeypot_field() {
    // 透過 CSS 讓人類使用者完全看不到此欄位
    echo '<div style="position:absolute; left:-9999px; top:-9999px;" aria-hidden="true">';
    echo '<label>請勿填寫此欄位</label>';
    echo '<input type="text" name="fax_number_custom" tabindex="-1" value="" autocomplete="off" />';
    echo '</div>';
}

// 3. 後端驗證邏輯
add_filter('authenticate', 'tj_check_login_security', 20, 3);
function tj_check_login_security($user, $username, $password) {
    if (!isset($_POST['wp-submit'])) return $user;

    // 檢查提交速度是否過快(小於 3 秒判定為機器人)
    if (isset($_POST['login_start_ts']) && (time() - intval($_POST['login_start_ts']) < 3)) {
         return new WP_Error('too_fast', '登入程序異常,請稍候再試。');
    }

    // 檢查蜜罐欄位是否有被填充
    if (!empty($_POST['fax_number_custom'])) {
         error_log("機器人攻擊攔截自: " . $_SERVER['REMOTE_ADDR']);
         return new WP_Error('bot_detected', '驗證錯誤,請重新整理頁面。');
    }

    return $user;
}

忠碁科技的專業堅持

在上述實作中,我們特別加入了 tabindex="-1"aria-hidden="true"
這是為了確保在保護安全的同時,不影響使用螢幕閱讀器的視障使用者。
真正的技術力,不僅在於防禦的深度,更在於對每一位使用者的尊重。

如果您希望針對網站進行更高階的安全佈署,歡迎聯繫忠碁科技,讓我們為您的數位資產保駕護航,這種深度客製化的防禦機制,展現了與僅依賴『現成外掛』完全不同的技術底蘊與專業層次。這不僅是防護,更是技術的藝術。