首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

WordPress 防垃圾留言完整策略:Akismet + 表單重命名 + 中文過濾 + 日文過濾

     編輯:PHP 綜合知識

前言

個人部落格常面臨垃圾留言氾濫問題:不僅佔用資料庫空間,大量機器人流量還會消耗伺服器資源。本文整合四層防禦策略,能有效攔截 99% 以上的垃圾留言,且不影響正常使用者留言。

策略一:Akismet 官方外掛 (基礎防禦)

  • 官網:https://wordpress.org/plugins/akismet/
  • 申請免費 API Key 即可啟用
  • 優點:自動學習、攔截率極高 (99%+)
  • 缺點:垃圾留言仍會寫入資料庫 (標記為垃圾),需定期清理或設定自動刪除

策略二:修改 wp-comments-post.php 檔名 (已失效)

早期做法是將 wp-comments-post.php 改名,並在主題 comments.php 中同步修改表單 action。但現代垃圾機器人可直接解析表單 action 或模擬瀏覽器行為,**此方法已基本失效**,不建議單獨依賴。

策略三:過濾純英文垃圾留言 (核心攔截)

大量垃圾留言為純英文/數字/符號,正常中文部落格留言幾乎都包含中文字。在主題 functions.php 加入:



策略四:過濾日文垃圾留言 (補強)

部分垃圾留言改用日文假名繞過中文檢測。針對常見日文假名/漢字加入黑名單:



完整整合代碼 (functions.php)

 2000) {
        wp_die('留言內容過長!');
    }
    return $comment;
}, 30);

// 4. 同一 IP/用戶頻率限制 (需配合快取或資料表)
add_filter('preprocess_comment', function($comment) {
    $ip = $_SERVER['REMOTE_ADDR'];
    $key = "comment_rate_limit:$ip";
    // 這裡需實作快取邏輯,例如 Redis/Memcached
    // if (cache_get($key)) wp_die('留言太頻繁,請稍後再試');
    // cache_set($key, 1, 60); // 60 秒內只能留言一次
    return $comment;
}, 40);

進階建議:結合其他防禦層

  • WP Crontrol 設定每日清理 wp_comments 中 comment_approved = 'spam' 超過 7 天的資料
  • 層級方案說明
    網路層 Cloudflare / WAF 擋惡意 IP、國別封鎖、速率限制、JS 挑戰
    應用層 reCAPTCHA v3 / hCaptcha 無感驗證,根據分數判斷機器人機率
    表單層 蜜罐欄位 (隱藏 input) 機器人會填寫隱藏欄位,正常用戶看不見
    內容層 Akismet + 本文策略 語義分析 + 規則過濾雙重保障
    資料層 定時清理垃圾留言表

    蜜罐欄位實作範例

    // 在 comments.php 表單中加入 (CSS 隱藏)
    <input type="text" name="website" id="website" value="" tabindex="-1" autocomplete="off" style="display:none;">
    
    // 在 functions.php 驗證
    add_filter('preprocess_comment', function($comment) {
        if (!empty($_POST['website'])) {
            // 機器人填寫了隱藏欄位
            wp_die('偵測到自動化程式');
        }
        return $comment;
    });

    總結

    垃圾留言防禦沒有銀彈,**多層疊加**才是王道:

    1. Akismet 擋大宗已知特徵垃圾
    2. 中文檢測擋純英文/數字機器人
    3. 關鍵字黑名單擋特定語言/廣告
    4. 蜜罐/驗證碼擋進階模擬瀏覽器機器人
    5. WAF/雲端防護擋分散式攻擊

    根據網站規模與流量,靈活組合上述策略,即可在不影響正常用戶體驗的前提下,將垃圾留言降至最低。

    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved