WordPress REST API へのアクセスを制限する
WordPress REST API を制御する時が来ました
English version: Restrict access to the WordPress REST API
WP Cerber Security を使用すると、デフォルトで有効になっている WordPress REST API へのアクセスを制限または完全にブロックできます。保護を有効にするには、[強化] タブに移動し、[次のいずれかを除く WordPress REST API へのアクセスをブロックする] を有効にします。これにより、以下の設定フィールドでアクセスを許可するか、ホワイト IP アクセス リストに IP を追加しない限り、REST API へのアクセスがブロックされます。
Contact Form 7、Jetpack、または REST API を利用する別のプラグインを使用する場合は、以下で説明するように、REST API 名前空間をホワイトリストに登録する必要があります。
特定の REST API 名前空間へのアクセスを許可する
REST API 名前空間は、特定の REST API リクエストを処理するプログラム コードを WordPress が認識できるようにするリクエスト URL の一部です。名前空間を取得するには、REST URL の/wp-json/と次のスラッシュの間の文字列を取得します。 REST API を利用するすべてのプラグインは、独自の一意の名前空間を使用します。以下の表は、一部のプラグインの名前空間を示しています。
プラグイン | 名前空間 |
お問い合わせフォーム 7 | contact-form-7 |
カルデラフォーム | cf-api |
Yoast SEO | yoast |
ジェットパック | jetpack |
スクリーンショットに示されているように、必要に応じて REST API の名前空間の例外を指定します。
ユーザーに REST API の使用を許可する
許可された (ログインしている) WordPress ユーザーに制限なく REST API を使用できるようにする場合は、[ログインしているユーザーに REST API を許可する] を有効にします。
WordPress REST API へのアクセスを IP アドレスで制限する
特定の IP アドレスまたは IP ネットワークから REST API へのアクセスを許可するには、それらを White IP Access Listに追加します。
特定の IP アドレスまたは IP ネットワークからの REST API へのアクセスを完全にブロックするには、それらを Black IP Access Listに追加します。
詳細: IP アクセス リストを使用して WordPress を保護する
REST API ユーザー列挙を停止する方法
ユーザーのデータへのアクセスをブロックし、REST API を介したユーザーの列挙を停止するには、[強化] タブで [ REST API を介したユーザーのデータへのアクセスをブロックする] 設定を有効にする必要があります。このセキュリティ機能は、ハッカーがサイトをスキャンしてユーザーのログインやユーザーの機密データをスキャンするのを検出して防止するように設計されています。
有効にすると、Cerber は REST API へのすべてのリクエストをブロックし、HTTP 403 エラーを返します。このようなイベントは [アクティビティ] タブで監視できます。それらは「REST APIへのリクエストが拒否されました」としてログに記録されます。
WordPress REST API を介したユーザーのデータへのアクセスは、次の 2 つの場合に常に許可されます。
- 管理者アカウントの場合、REST API 経由の「ユーザー列挙の停止」が有効になっている場合、管理者ロールを持つすべてのユーザーは常にユーザーのデータにアクセスできます。
- White IP Access List のすべての IP アドレス
REST API とは何ですか?
簡単に言えば、2 つの異なるコード (アプリケーション) が相互に通信し、標準化された方法でデータを交換できるようにするテクノロジです。 REST API を使用すると、開発者は、リモート コンピューターまたは Web サイトで実行されている外部アプリケーションから WordPress コンテンツを作成、読み取り、更新できます。 WP REST API は、WordPress バージョン 4.7.0 以降、デフォルトで有効になっています。
続きを読む: WP REST API へのアクセスを制限することが重要な理由
開発者向けドキュメント: https://developer.wordpress.org/rest-api/
任意の数の Web サイトの REST API 設定をリモートで管理できることをご存知ですか?メインのCerber.Hub Web サイトでメイン Web サイト モードを有効にし、他の Web サイトでマネージド Web サイト モードを有効にして、1 つのダッシュボードからすべての WP Cerber インスタンスを管理します。
WordPress のセキュリティを強化するための次のステップ
- スパムユーザー登録をブロックする方法
- スパムフォーム送信をブロックする方法
- WordPress ユーザーをブロックする方法
- 特定の IP アドレスからのアクセスをブロックする方法
- 特定のユーザー名を使用して無効にする方法
とにかく、Cerber Securityとは何ですか?これは WordPress の完全なセキュリティ ソリューションであり、シンプルかつ効果的な制限ログイン試行プラグインから進化したものです。
OK. But how do I know whether a plugin uses the REST API so I have to add it to the namespace access-list?
1. From the documentation on a plugin.
2. Checking for REST API requests on the Live Traffic page: just click the small “REST API” button above the table.
3. If you know the REST API namespace that is used by a plugin you can search for requests by entering that REST API namespace on the Advanced search form in the “URL contains” field.
4. Disable REST API in the settings completely and check how the plugin works. If the plugin doesn’t work anymore, that means it uses REST API. To find out its namespace look for “Request to REST API denied” events the Activity page.
Mmm… thnx, but that does not really make me happy. I checked e.g. the contact form and that worked because the REST API works for the administrator. For me small blogger with 22 plugins operational this becomes a nuisance and a lot of time and work. Can’t this be done automatically eg by suggesting or something?
And while we are talking, why should I not permit /oembed/ as a permitted namespace? It seems to be used by a robot (and of course Cerber blocks it correctly 🙂 ).
For other questions I will use the support blog as I normally do.
Sorry for the kind of abuse of this blog. Won’t do it again.