如何安全移除 WordPress Feed 中的惡意網址 wellformedweb.org/CommentAPI

如何安全移除 WordPress Feed 中的惡意網址 wellformedweb.org/CommentAPI

最近有位朋友 im2828 提醒我們,WordPress 的一個舊網址 http://wellformedweb.org/CommentAPI 因為過期而被惡意搶注,現在這個網址可能會跳轉到一些不雅的網站。這可不是小事,某些伺服器商已經開始通知用戶進行處理了,真是感謝 im2828 的提醒!

這個網址到底是幹嘛的?

wellformedweb.org/CommentAPI 原本是用來標準化 WordPress 等博客系統的評論接口,早期 WordPress 就在 Feed 中硬編碼了這個鏈接,直到現在還在使用。但隨著時間的推移,這個域名的持有者不再續費,結果就被一些從事非法業務的公司買下了。現在的 wellformedweb.org 可能會導向賭博、色情等不法內容,這可得小心了。

如何檢查你的网站是否有這個問題?

檢查的方法非常簡單,只要在你的網站域名後面加上 /feed,例如 https://www.wpdaxue.com/feed。如果你看到包含 xmlns:wfw 的行,那麼恭喜你,你的網站可能有這個遺留問題。

怎麼正確移除 wellformedweb.org/CommentAPI 的輸出?

其實,這個網址並不會顯性地顯示在頁面上,普通使用者一般不會直接訪問到它。唯一能看到的地方就是在 Feed 的代碼中。雖然不確定爬蟲是否會識別這個網址為惡意網址,但為了安全起見,還是建議將其移除。

方法一:安裝外掛或添加代碼(最佳方案)

最簡單的方法是安裝一個外掛,名為 Remove WFW CommentAPI Link。只需在後台的外掛安裝界面上傳並啟用即可。

如果你不想安裝外掛,還可以將以下代碼添加到你當前啟用的主題的 functions.php 文件中:

/**
 * Plugin Name: Remove WFW CommentAPI Link
 * Plugin URI: https://www.wpdaxue.com/remove-wfw-commentapi-link.html
 * Start output buffering on feed requests.
 */
function rwcl_feed_ob_start() {
    if ( ! is_feed() ) {
        return;
    }
    ob_start( 'rwcl_feed_ob_callback' );
}
add_action( 'template_redirect', 'rwcl_feed_ob_start', 0 );

/**
 * Output buffer callback: strip wfw-related content from the feed.
 *
 * @param string $output The buffered feed output.
 * @return string Modified feed output.
 */
function rwcl_feed_ob_callback( $output ) {
    $output = preg_replace( '/\n\t*xmlns:wfw="http:\/\/wellformedweb\.org\/CommentAPI\//', '', $output );
    $output = preg_replace( '/<wfw:commentRss>.*?<\/wfw:commentRss>\s*/s', '', $output );
    return $output;
}

方法二:直接修改源代碼(不推薦)

雖然可以直接修改 wp-includes/feed-rss2.php 來移除相關代碼,但這樣做不太建議,因為每次更新 WordPress 都需要重新修改。

無效的方法

有些教程提到的代碼實際上是無效的,因為根本沒有對應的 filter 鉤子可以過濾,實測無效!

總結

以上就是從 Feed 輸出中移除 wellformedweb.org/CommentAPI 的解決方案。至於這個過時網址何時會從 WordPress 源碼中移除,我們就不得而知了。如果你的主機商要求你直接刪除源碼中的相關代碼,可以查看以下兩個文件:

  • wp-includes/feed-rss2.php 大約在第 22 行
  • wp-admin/includes/export.php 大約在第 524 行

記得保持網站安全,定期檢查,讓我們一起抵擋這些惡意網址的侵擾!

0 Comments

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *