15%

全场主机优惠15%

测试技能,享折扣

使用代码:

Skills
开始使用
21.10.2024
5 +1

WordPress中的Trackback和Pingback:它们是什么、如何工作以及您是否应该使用它们

Trackbackpingback是WordPress博客间通知协议,当某个网站链接到另一个网站的内容时,会自动或手动通知被引用的网站。Pingback是完全自动化的——WordPress无需任何用户操作即可发送并验证。Trackback是半手动的——作者必须提供目标博客的trackback端点URL,通知中会携带链接文章的简短摘录。

这两种机制的设计初衷是在早期博客圈中构建去中心化的对话层。但在实践中,两者都已成为评论垃圾信息的主要来源,大多数生产环境的WordPress网站会完全禁用它们。在做出决定之前,必须深入了解每种协议的工作原理,以及保持其活跃状态所带来的具体安全和SEO影响。

每种协议背后的技术架构

Trackback的底层工作原理

Trackback是一个HTTP POST请求,发送到目标博客公开的特定trackback URL。请求体是简单的表单编码内容,包含四个字段:titleurlblog_nameexcerpt。接收服务器解析这些字段后,如果通过审核,则将摘录作为类似评论的条目显示在被引用的文章上。

该协议没有内置的验证步骤。发送服务器不会对链接文章的内容进行任何加密声明,接收服务器也无法可靠地确认链接是否真实存在。这一架构缺陷是trackback垃圾信息的根本原因:任何脚本都可以向trackback端点POST伪造数据,而无需发布真实链接。

原始的trackback POST请求如下所示:

curl -X POST https://example.com/wp-trackback.php?p=42 
  -d "title=My+Post+Title" 
  -d "url=https://attacker.com/fake-post" 
  -d "blog_name=Legitimate+Looking+Blog" 
  -d "excerpt=This+is+a+fabricated+excerpt."

由于没有握手机制,接收服务器无法将其与合法通知区分开来。

Pingback的底层工作原理

Pingback使用XML-RPC作为传输层,具体采用Pingback 1.0规范中定义的pingback.ping方法。当您发布包含外部链接的文章时,WordPress会在目标服务器上调用pingback.ping,传递两个参数:您的文章URL(来源)和被链接页面的URL(目标)。

接收服务器随后执行一个trackback完全跳过的关键步骤:它获取来源URL,并确认目标链接确实存在于页面的HTML中。只有在完成此验证后,才会记录pingback。

<?xml version="1.0"?>
<methodCall>
  <methodName>pingback.ping</methodName>
  <params>
    <param><value><string>https://yoursite.com/your-post/</string></value></param>
    <param><value><string>https://targetsite.com/their-post/</string></value></param>
  </params>
</methodCall>

这种验证使pingback比trackback更难被伪造,但它引入了另一种漏洞:服务器端请求伪造(SSRF)。攻击者可以构造一个pingback,强制目标服务器获取任意内部URL——包括http://127.0.0.1/wp-admin/或云元数据端点(如http://169.254.169.254/)——实际上是将WordPress XML-RPC栈用作代理。

Trackback与Pingback:对比一览

功能TrackbackPingback
发起方式手动(作者粘贴端点URL)自动(发布时触发)
传输协议HTTP POST(表单编码)XML-RPC(`pingback.ping`)
链接验证有——服务器获取来源URL
携带摘录否(仅链接)
垃圾信息防护极低低(存在SSRF风险)
双方均需支持
仍被广泛使用极少
主要安全风险伪造内容注入SSRF / DDoS放大攻击

如何在WordPress中启用或禁用Trackback和Pingback

通过仪表盘进行全局设置

在全站范围内控制这两种协议的最快方式是通过WordPress讨论设置:

  1. 登录您的WordPress管理面板。
  2. 导航至设置 > 讨论
  3. 默认文章设置下,找到标有“允许来自其他博客的链接通知(pingback和trackback)”的复选框。
  4. 取消勾选以在全站禁用这两种协议,然后点击保存更改

此设置仅适用于更改后创建的文章,不会对现有文章的pingback和trackback进行追溯性禁用。

单篇文章控制

要管理特定文章的通知:

  1. 在块编辑器中打开该文章。
  2. 在右侧边栏中,滚动至讨论面板。如果不可见,请打开屏幕选项(右上角)并启用讨论复选框。
  3. 取消勾选允许pingback和trackback
  4. 更新或发布文章。

通过SQL批量禁用所有现有文章

如果您的网站有数千篇现有文章,仪表盘方式并不实用。请直接对WordPress数据库运行以下查询——务必先进行备份:

UPDATE wp_posts
SET ping_status = 'closed'
WHERE post_status = 'publish'
  AND post_type = 'post';

如果表前缀不同,请将wp_替换为您实际的表前缀。此操作可在单次执行中关闭所有已发布文章的ping状态。

在服务器层面封锁XML-RPC端点

在WordPress设置中禁用pingback后,xmlrpc.php端点仍然可以访问。为实现完整保护,请在Web服务器层面将其封锁。

Apache——添加到.htaccess或您的虚拟主机配置中:

<Files xmlrpc.php>
  Order Deny,Allow
  Deny from all
</Files>

Nginx——添加到您的server {}块内:

location = /xmlrpc.php {
    deny all;
    return 403;
}

封锁xmlrpc.php还可消除基于XML-RPC的DDoS放大攻击向量——攻击者向WordPress网站发送数千个pingback请求,每个请求都会导致服务器发出出站HTTP请求,实际上是将您的服务器变成分布式攻击的不情愿参与者。

如果您在VPS Hosting方案上运行WordPress,您拥有完整的root访问权限,可以直接实施这些服务器级规则。共享环境可能需要使用.htaccess或安全插件代替。

不可忽视的安全风险

基于Pingback的DDoS放大攻击

由于pingback.ping会导致接收服务器发出出站HTTP请求,僵尸网络可以向存在漏洞的WordPress网站发送数万个pingback请求,每个请求都指示其获取受害者的URL。WordPress服务器因此成为放大器。这种攻击模式早在2014年就已被广泛记录,在任何暴露xmlrpc.php的地方仍然具有现实威胁。

通过Pingback实施SSRF攻击

在云托管的WordPress安装中——包括运行在VPS Hosting独立服务器上的——攻击者可以提交一个pingback,其中来源URL指向内部网络地址。如果服务器在虚拟机管理程序或VPC层面没有防火墙保护,pingback验证请求可能访问到:

  • http://127.0.0.1/wp-admin/——探测内部管理界面
  • http://169.254.169.254/latest/meta-data/——AWS EC2实例元数据
  • 内部数据库或缓存端点

缓解此风险需要同时封锁xmlrpc.php,并确保服务器的出站防火墙规则阻止对RFC 1918和链路本地地址范围的请求。

Trackback垃圾信息与评论污染

由于trackback不进行任何验证,极易被滥用。单次垃圾信息活动就可以向您的评论队列注入数百条虚假trackback,每条都链接到恶意软件分发网站、药品垃圾信息或钓鱼页面。即使启用了审核,其数量也可能使网站管理员不堪重负,并降低合法评论的信噪比。

2024年Trackback和Pingback的SEO现实

这些协议在2000年代初设计时,任何反向链接都具有重要的PageRank信号价值。谷歌的算法自那时起已发生了实质性演变。目前适用以下几点现实:

  • 自引用pingback(WordPress对自身内部链接发送ping)会生成带有nofollow标签的评论链接,不传递任何PageRank价值。
  • 出现在评论区的Trackback链接在现代WordPress主题中几乎普遍标记为nofollow,不传递任何链接权重。
  • 如果意外批准了垃圾信息生成的trackback,可能会将您的域名与低质量或受惩罚的网站关联——对您的权威性档案产生净负面影响。
  • 谷歌的SpamBrain系统能有效识别并折扣来自评论区的链接模式,包括trackback生成的链接。

对大多数网站而言,启用任一协议的实际SEO价值实际上为零,而垃圾信息污染和安全暴露的风险却是真实存在的。

Trackback和Pingback仍有合理用途的场景

在少数情况下,这些功能仍保留其价值:

  • 封闭的私有博客网络(内网、学术出版平台),其中所有参与网站均受信任,垃圾信息不是问题。
  • 遗留CMS集成,合作平台仅支持pingback作为通知机制,且没有可用的现代webhook替代方案。
  • 调试和协议研究——了解XML-RPC pingback流程的工作原理,在审计WordPress安全配置时具有重要价值。

在这些情境之外,应禁用这些功能。

WordPress讨论设置与评论审核最佳实践

如果您选择保持pingback启用——例如,为了追踪网络中其他受信任网站何时引用了您的内容——请实施以下控制措施:

  • 启用评论审核,确保没有pingback在未经手动批准的情况下公开显示(设置 > 讨论 > 评论出现前 > 评论必须手动批准)。
  • 设置 > 讨论下的不允许的评论关键词列表中添加已知垃圾信息域名。
  • 安装垃圾信息过滤插件(Akismet是部署最广泛的),在trackback和pingback垃圾信息进入审核队列之前自动标记。
  • 定期审核您的评论队列。已批准的垃圾信息trackback比被拦截的更难事后清理。

对于在托管WordPress环境或带cPanel的VPS上运行的网站,cPanel的ModSecurity规则可以在格式错误的XML-RPC请求到达WordPress应用层之前,增加额外的过滤层。

实用决策矩阵

使用此清单确定适合您网站的正确配置:

在以下情况下禁用trackback和pingback:

  • 您的网站可公开访问,并接收任何数量的自然流量
  • 您没有专门的评论审核工作流程
  • 您在没有服务器级XML-RPC封锁的共享或云服务器上运行WordPress
  • 您与依赖这些协议的其他博客没有建立关系

仅在以下情况下考虑保持pingback启用:

  • 所有链接网站均已知、受信任,且在受控网络内
  • 您已将评论审核设置为手动批准
  • xmlrpc.php在服务器层面受到IP白名单或HTTP认证保护
  • 您已确认托管环境不存在通过出站HTTP请求的SSRF漏洞

无论您的选择如何,始终执行以下操作:

  • 运行上述SQL查询,关闭所有现有文章的ping状态
  • 如果您不将XML-RPC用于任何其他目的,请在Web服务器层面封锁xmlrpc.php(REST API是移动应用和远程发布的现代替代方案)
  • 审核您现有的评论队列,查找此前已批准的垃圾信息trackback

对于需要强大基础设施来实施这些服务器级控制的网站,独立服务器提供了执行防火墙规则、封锁特定端点以及监控Web服务器进程出站连接尝试所需的完整网络和操作系统级访问权限。

常见问题

Trackback和pingback是同一回事吗?

不是。Trackback是手动的HTTP POST通知,携带摘录且不进行链接验证。Pingback是自动化的XML-RPC调用,在记录通知之前会验证链接文章中确实包含被引用的URL。两者目标相同,但使用不同的协议,具有不同的安全特性。

Trackback和pingback对SEO有帮助吗?

没有任何实质性帮助。这些机制生成的链接出现在评论区,WordPress默认将其标记为nofollow,不传递任何PageRank。垃圾信息生成的trackback可能通过将您的网站与低质量域名关联,主动损害您网站的权威性。

我可以在不禁用整个XML-RPC API的情况下禁用pingback吗?

可以。您可以通过设置 > 讨论专门禁用pingback,或者通过在WordPress中过滤xmlrpc_methods钩子来移除pingback.pingpingback.extensions.getPingbacks,同时保留其他XML-RPC方法。但是,如果您没有其他XML-RPC依赖,在服务器层面完全封锁xmlrpc.php是更安全的方法。

WordPress pingback相关的SSRF风险是什么?

当WordPress网站收到pingback时,它会向来源URL发出出站HTTP请求以验证链接。攻击者可以提供内部IP地址作为来源URL,导致服务器探测内部网络资源。这是一种服务器端请求伪造漏洞。在Web服务器层面封锁xmlrpc.php可完全消除此攻击面。

如何批量关闭数千篇现有WordPress文章的pingback?

对WordPress数据库使用直接SQL查询:UPDATE wp_posts SET ping_status = 'closed' WHERE post_status = 'publish' AND post_type = 'post';——在运行任何直接SQL修改之前,务必先备份数据库。WordPress仪表盘设置仅对此后创建的新文章生效。

15%

全场主机优惠15%

测试技能,享折扣

使用代码:

Skills
开始使用