通过隐藏REST API保护您的WordPress - Nelio Software

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

通过隐藏开发者通过 API 访问网站的许多功能和数据。然而,这种开放性也可能带来安全隐患。本文将介绍如何通过隐藏 REST API 来保护您的 WordPress 网站。


什么是 WordPress REST API?

如果您使用的是较新的 WordPress 版本,您可能已经在使用 REST API。通过将 /wp-json/ 添加到您的域名后,您可以直接访问 REST API。例如,访问以下 URL,您可能会发现一些意想不到的数据:

  • mydomain.com/wp-json/wp/v2/users
  • mydomain.com/wp-json/wp/v2/posts

第一个 URL 会返回一个包含网站用户数据的 JSON 文件,其中包括用户标识符等敏感信息。而第二个 URL 则会显示最近发布的文章列表。如果您的网站包含仅供高级会员访问的内容,这些数据可能会通过 REST API 被意外公开。

为了避免这些潜在的安全风险,您需要对 REST API 的访问权限进行限制。


仅向注册用户显示 WordPress REST API

一种有效的解决方案是限制未注册用户访问 REST API。通过添加以下代码,您可以确保只有已登录的用户才能访问 REST API:

add_filter( 'rest_authentication_errors', function( $result ) {
    if ( ! is_user_logged_in() ) {
        return new WP_Error( 'rest_forbidden', '您需要登录才能访问 REST API。', array( 'status' => 401 ) );
    }
    return $result;
});

您可以将此代码添加到主题的 functions.php 文件中,或者开发一个独立的插件来实现这一功能。这样,当未登录用户尝试访问 REST API 时,他们将收到错误消息,而您的内容将得到保护。


仅向管理员显示 WordPress REST API

如果您希望进一步限制访问权限,仅允许具有管理员角色的用户访问 REST API,可以使用以下代码:

add_filter( 'rest_authentication_errors', function( $result ) {
    if ( ! current_user_can( 'administrator' ) ) {
        return new WP_Error( 'rest_forbidden', '只有管理员可以访问 REST API。', array( 'status' => 403 ) );
    }
    return $result;
});

通过这种方式,您可以确保只有管理员能够访问 REST API,从而进一步提高网站的安全性。


使用插件禁用 WordPress REST API

如果您需要更灵活的控制,可以使用专门的插件来禁用 REST API。例如,一些插件可以默认阻止未注册用户访问 REST API,并允许您自定义哪些 API 路由可以启用或禁用。

通过这些插件,您可以轻松管理 REST API 的访问权限,从而有效保护网站数据。例如,您可以选择禁用某些敏感的 API 路由,同时保留其他必要的功能。


通过限制 REST API 的访问权限,您可以显著提高 WordPress 网站的安全性。无论是通过代码实现,还是使用插件,保护 REST API 都是一个重要的安全措施。根据您的需求选择合适的解决方案,确保您的网站数据免受未经授权的访问。


原文链接: https://neliosoftware.com/blog/protect-your-wordpress-by-hiding-the-rest-api/