如何禁用WordPress的REST API

作者:API传播员 · 2026-01-04 · 阅读时间:4分钟

WordPress Python 等编程语言与 WordPress 进行远程通信。此外,许多插件和工具(如 WP-CLI)也依赖 REST API 来实现远程管理功能。然而,如果配置不当,REST API 可能会带来安全隐患。在本文中,我们将探讨禁用 WordPress REST API 的原因以及如何通过插件或代码来实现禁用,以提高网站的安全性。


为什么要禁用 WordPress 的 REST API?

WordPress 的 REST API 对于程序员和某些管理工具来说非常有用,它可以通过 JSON 格式的 Web 请求提供信息,从而帮助开发者更好地理解和操作程序。测试 REST API 的方法也非常简单,只需在浏览器地址栏中添加 /wp-json 到您的域名即可。例如:

如上图所示,REST API 会显示许多信息。然而,这些信息可能被任何人轻松获取,甚至包括恶意用户。例如,通过在域名后添加 /wp-json/wp/v2/users,可以获取网站用户的列表。此外,攻击者还可能通过多次调用该 API 发起拒绝服务(DoS)攻击。

因此,如果您并未使用 REST API,建议禁用它以提升网站的安全性


方法一:通过插件禁用 REST API(简单方法)

最简单的禁用方法是使用 Disable REST API 插件。以下是具体步骤:

  1. 安装并激活 Disable REST API 插件。如果您不熟悉插件的安装过程,可以参考相关教程视频。

  2. 插件无需额外配置,激活后会自动拒绝对 REST API 的请求。但登录用户或管理员的请求仍然会被允许。

  3. 验证插件是否生效:关闭 WordPress 会话,然后访问之前提到的 API 地址。如果插件正常工作,您将看到一条未经授权的提示信息,如下图所示:

注意事项

请注意,某些插件(如 Contact Form)可能依赖 REST API 才能正常运行。在禁用 API 后,请务必检查网站的功能是否受到影响。


方法二:通过代码禁用 REST API(高级方法)

如果您是一名开发者或熟悉 WordPress 主题的设计师,可以通过代码禁用 REST API。以下是具体步骤:

  1. 确保您的网站正在使用 子主题,以避免直接修改主主题文件导致更新时丢失更改。

  2. 将以下代码添加到子主题的 functions.php 文件中:

    // 禁用 REST API 的匿名访问
    add_filter('rest_authentication_errors', function ($result) {
       if (!is_user_logged_in()) {
           return new WP_Error('rest_forbidden', __('您无权访问此 API。'), array('status' => 401));
       }
       return $result;
    });
  3. 保存文件后,任何匿名请求都会被阻止,而已登录用户或经过身份验证的插件仍然可以正常使用 REST API。


总结

WordPress REST API 是一个强大的工具,但如果您不需要使用它,禁用 API 是提升网站安全性的有效措施。对于普通用户,推荐使用插件来实现禁用;而对于开发者,可以通过代码实现更灵活的控制。在禁用 API 后,请务必检查网站的功能是否受到影响,以确保正常运行。

原文链接: https://superadmin.es/blog/wordpress/deshabilitar-json-rest-api/