移除 WordPress Feed 输出的 wellformedweb.org/CommentAPI 恶意网址的解决方法

在各种论坛,主机博客看到有人说 WordPress 源码引入的一个网址 http://wellformedweb.org/CommentAPI 的域名 wellformedweb.org 过期后被恶意抢注了,该网址会跳转到异常的网站(虽然我直接访问没有看到),有些服务器商已经通知用户进行处理。

这个 wellformedweb.org 域名最早是用于 CommentAPI 规范(评论 API)的参考网站。该规范由社区维护,用以标准化 WordPress 等博客系统的评论接口。由于历史原因,WordPress 从很早的版本开始就在 Feed 中硬编码了这个链接,并且一直保留至今。

然而,随着时间推移,wellformedweb.org 域名的原持有者可能已不再续费。该域名已被其它公司购买,现在的 wellformedweb.org 会跳转到非法内容页面。

虽然这个链接只是 XML 命名空间声明,并非用户点击的显式链接,但搜索引擎爬虫、安全扫描工具以及浏览器都会抓取它。一旦被检测到网站包含指向垃圾域名的链接,轻则搜索引擎降权,重则被服务商关停、被通报。

鹿泽笔记检查了一下自己的网站,果不其然,也是有这个链接的,大概每个WordPress网站都有这个链接。

输入网址:域名/feed,即可看到:

feed
  • 任何版本的 WordPress(只要未手动移除该链接)都会在 Feed 中包含这个命名空间。
  • 即使使用的是最新版 WordPress,官方仍未彻底删除此链接(部分版本已移除,但仍有大量主题或插件残留)。
  • 此外,一些老旧主题、插件代码中也可能硬编码了 wellformedweb.org 的引用。

其实,由于 wellformedweb.org/CommentAPI 并非显性输出到页面中,也无法直接点击访问,普通用户一般不可能访问到这个网址,在前端页面中,唯一可以通过网址访问和查看到 wellformedweb.org/CommentAPI 网址的也就是上面说的 Feed 网址的代码中。

这个 feed 网址可能会被一些蜘蛛爬行,至于到底 wellformedweb.org/CommentAPI 会不会被蜘蛛识别为恶意网址,甚至蜘蛛是否会爬行 wellformedweb.org/CommentAPI 都无法确认,但是出于安全合规考虑,我们还是移除它会好一些。

所以只要检查到了,还是要处理一下:

1、可以将下面的代码添加到当前启用的主题的 functions.php 文件:

/**
 * Plugin Name: Remove WFW CommentAPI Link
 * 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 ) {
	// Remove the entire line containing xmlns:wfw (including leading newline and tab indentation) to keep XML formatting intact.
	$output = preg_replace( '/\n\t*xmlns:wfw="http:\/\/wellformedweb\.org\/CommentAPI\/"/', '', $output );
	// Remove <wfw:commentRss>...</wfw:commentRss> tags and any trailing whitespace.
	$output = preg_replace( '/<wfw:commentRss>.*?<\/wfw:commentRss>\s*/s', '', $output );
	return $output;
}

2、如果担心其他位置(如文章内容、自定义字段)也残留了该域名,可以使用 Better Search Replace 插件,在数据库中搜索 wellformedweb.org 并将其替换为空字符串。操作前务必备份数据库!

3、插件解决:在WP后台插件直接搜这个,安装后启用即可,feed页面自动跳回首页:Disable Feeds WP(https://wordpress.org/plugins/disable-feeds-wp/#developers)

Disable Feeds WP

4、其它全能代码禁用,在主题的 functions.php 文件中添加以下代码:

// 禁用所有 Feed
function disable_all_feeds() {
    wp_die(
        '<h1>本站已禁用订阅功能</h1>
        <p>请直接访问网站获取最新内容。</p>
        <p><a href="' . home_url() . '">返回首页</a></p>',
        '订阅已禁用',
        array('response' => 403)
    );
}

// 禁用 RSS、Atom、RDF 等所有 Feed
add_action('do_feed',      'disable_all_feeds', 1);
add_action('do_feed_rdf',  'disable_all_feeds', 1);
add_action('do_feed_rss',  'disable_all_feeds', 1);
add_action('do_feed_rss2', 'disable_all_feeds', 1);
add_action('do_feed_atom', 'disable_all_feeds', 1);

// 禁用评论 Feed
add_action('do_feed_rss2_comments', 'disable_all_feeds', 1);
add_action('do_feed_atom_comments', 'disable_all_feeds', 1);

// 移除 head 中的 Feed 链接
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'feed_links_extra', 3);

5、直接修改源代码 wp-includes\feed-rss2.php 移除相关代码(更新WordPress会重新覆盖)。

  • wp-includes/feed-rss2.php
  • wp-admin/includes/export.php

需要删除文件里的代码的话,建议在上面2个文件中查找。

好了,这几个方法选择一个解决即可。

WordPress feed

👋 感谢您的观看!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享