Disable REST API

外掛說明

控制存取 WordPress REST API 最全方位的外掛。

設定後便可不再需要管理。僅需上傳外掛並啟用,網站上的一般使用者便無法存取整個 REST API。

如果需要存取某些端點,這個外掛也可以辦到。前往外掛設定頁面,網站管理員可以快速設定 REST API 個別端點 (或端點的整個分支) 的允許清單。

網站管理員可以依據使用者角色進行設定,因此可以達成未經驗證的使用者 (例如沒有網站帳號及密碼的使用者) 有一組規則,WooCommerce 客戶另有一組規則,而訂閱者、編輯及網站管理員也有各自的一組規則。請注意,在隨裝即用的原則下,仍會授予全部已定義的使用者角色完整存取 REST API 的權限,直至完成相關設定才會限制存取。

對於大多數的 WordPress 核心程式版本來說,如果不允許使用者存取端點,這個外掛會傳回身分驗證錯誤。這個外掛對於舊版 WordPress 4.4、4.5 及 4.6 提供支援,會以 rest_enabled 篩選器停用整個 REST API。

螢幕擷圖

  • 透過篩選器停用網站 API 後,JSON 傳回的資料 (WordPress 4.4、4.5 及 4.6)
  • 透過身分驗證方法停用網站 API 後,JSON 傳回的資料 (WordPress 4.7 或更新版本)
  • 外掛設定頁面讓網站管理員可以依據使用者角色選取要允許存取的 REST API 端點

安裝方式

  1. 透過 FTP 上傳解壓縮所得的 disable-json-api 資料夾及其全部檔案至 /wp-content/plugins/ 目錄。
  2. 或是前往 WordPress 網站管理後台的 [外掛]→[安裝外掛] 頁面,上傳 disable-json-api_v#.#.zip 檔案。
  3. 在 WordPress 管理後台的 [外掛] 選單中啟用外掛。

常見問題集

如何確認這個外掛的執行是否有效?

外掛啟用後,以有帳號的 WordPress 使用者登入,REST API 會如預期般執行;如果使用者以另一個瀏覽器 (或 Chrome 的 [無痕式視窗]) 登入網站,會以乾淨的工作階段測試網站。在沒有登入的狀況下前往 yourdomain.com/wp-json/ (或 yourdomain.com/?rest_route=/,如果網站停用易於辨識的永久連結),便不會取得任何結果,並會傳回身分驗證錯誤 (Disable REST API: 僅有已驗證的使用者能存取 REST API)。

這個外掛可以停用 WordPress 網站中的全部 REST API 嗎?

這個外掛僅能停用 WordPress 核心程式本身提供的 REST API。如果外掛或佈景主題提供他們專屬的 REST API (不要與 WordPress API 本身提供的專屬端點混淆),這個外掛對這些第三方程式提供的 REST API 無效。

使用者評論

2023 年 12 月 29 日
The plugin does what it says on the tin, without being pretentious. Absolutely fantastic!
2023 年 4 月 3 日
The plugin still works for me on WordPress 6.2. It’s great to have the option to allow API access where I need it and block everything else.
2023 年 1 月 26 日
Allows locking the WP API behind auth and selectively allowing it where needed. Despite the lack of plugin updates, the author does have an active github repo so don’t let that put you off.
2023 年 1 月 20 日
Blocking the REST API entirely breaks plugins that require this functionality, so being able to selectively enable routes is perfect. I recommend this plugin to everyone who uses Independent Analytics to secure their site while still enabling analytics to be recorded.
2024 年 4 月 25 日
This is a very good plugin with the options, and it could still work now, but we can not verify compliance. Please update. And do not forget to update the .txt file that shows tested Wordpress.
閱讀全部 37 則使用者評論

參與者及開發者

以下人員參與了開源軟體〈Disable REST API〉的開發相關工作。

參與者

〈Disable REST API〉外掛目前已有 13 個本地化語言版本。 感謝全部譯者為這個外掛做出的貢獻。

將〈Disable REST API〉外掛本地化為台灣繁體中文版

對開發相關資訊感興趣?

任何人均可瀏覽程式碼、查看 SVN 存放庫,或透過 RSS 訂閱開發記錄

變更記錄

1.8

  • Tested up to WP v6.3
  • Added dra_error_message filter so devs can customize the access error message
  • Fixed bug that caused fatal errors if activating plugin on installations running the LearnPress plugin
  • Changed minimum requirements to PHP 5.6 (up from 5.3) and WordPress 4.9 (up from 4.4). Adding docblock comments to support minimums.

1.7

  • Tested up to WP v5.8
  • Replace use of filemtime() with plugin version number for static file enqueues. Props @tangrufus for bringing this up!
  • Fixed logic bug for role-based default_allow rules. Props @msp1974 for the report!
  • Few small code-style updates

1.6

  • Tested up to WP v5.6
  • Added support for managing endpoint access on a per-user-role basis
  • Soooooooo many small changes behind the scenes to support the above

1.5.1

  • Tested up to WP v5.5

1.5

  • Tested up to WP v5.3
  • Added enforcement for WordPress and PHP minimum version requirements
  • Fixed minor bug to prevent unintended empty routes
  • Minor text updates and adding textdomain to translation functions that didn’t have them

1.4.3

  • Added load_plugin_textdomain() for i18n

1.4.2

  • Fixed issue causing unintentional unlocking of endpoints when another WP_Error existed before this plugin did its job

1.4.1

  • Fixed echo of text URL to primary Plugins page in WP Dashboard

1.4

  • Tested for WP v4.8
  • Tested for PHP 5.3+
  • Added settings screen
  • Site Admins may now whitelist routes that they wish to allow unauthenticated access to
  • Added dra_allow_rest_api filter to the is_logged_in() check, so developers can get more granular with permissions
  • Props to @tangrufus for all of the help that went into this release

1.3

  • Tested for WP v4.7
  • Adding new functionality to raise authentication errors in 4.7+ for non-logged-in users

1.2

  • Tested for WP v4.5
  • Removal of actions which publish REST info to the head and header

1.1

  • Updated to support the new filters created in the 2.0 beta API

1.0

  • Initial Release