Disable REST API

説明

** Version 1.4 now supports whitelisting of individual routes within the REST API **

The engine for the API has existed in WordPress since v4.4, but additional functionality and endpoints are a
continual project. While this is very exciting news for many reasons – and many plugins, themes, and even pieces of
WordPress core are already beginning to use the REST API – it is also not functionality that every site admin is going
to want enabled on their website if not necessary.

As of WordPress 4.7, the filters provided for disabling the REST API were removed. To compensate, this plugin will
forcibly return an authentication error to any API requests from sources who are not logged into your website, which
will effectively still prevent unauthorized requests from using the REST API to get information from your website.

For WordPress versions 4.4, 4.5 and 4.6, this plugin makes use of the rest_enabled filter provided by the API to
disable the API functionality. However, it is strongly recommended that all site owners run the most recent version
of WordPress except where absolutely necessary.

スクリーンショット

The JSON returned by a website with the API disabled via filters (WP versions 4.4, 4.5, 4.6)

The JSON returned by a website with the API disabled via authentication methods (WP versions 4.7+)

While logged into WordPress as any user, the REST API will function as intended. Because of this, you must use a new
browser – or Chrome’s incognito mode – to test your website with a clean session. Go to yourdomain.com/wp-json/ (or
yourdomain.com/?rest_route=/ if you have pretty permalinks disabled) while NOT LOGGED IN to test the results. You will
see an authentication error returned if the plugin is active. “DRA: Only authenticated users can access the REST API.”

Does this plugin disable all REST API’s installed?

This plugin is ONLY meant to disable endpoints accessible via the default REST API that is part of WordPress itself. If
a plugin or theme chooses to register its namespace with the core REST API, its endpoints will – by default – by
disabled so long as this plugin is active. Namespaces and routes may be whitelisted via this plugin’s Settings page.

Since the disable REST filter was so wisely disabled *sarcasm*, this plugin is a necessary tool. It’s unconscionable to provide a whole new huge attack surface with the REST API, provide a filter to disable it and then suddenly remove that filter. WTF. Millions of WP sites running 4.7 and 4.7.1 are now defaced because of hubris by the core developers. Years of work to improve WordPress’s reputation for insecurity undone by one irresponsible decision.