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 名前空間は、WordPress が特定の REST API リクエストを処理するプログラム コードを認識できるようにするリクエスト URL の一部です。名前空間を取得するには、REST URL の/wp-json/と次のスラッシュの間の文字列を取得します。 REST API を利用するすべてのプラグインは、独自の一意の名前空間を使用します。以下の表は、いくつかのプラグインの名前空間を示しています。
プラグイン | 名前空間 |
お問い合わせフォーム7 | contact-form-7 |
カルデラの形成 | cf-api |
ヨーストSEO | yoast |
ジェットパック | jetpack |
スクリーンショットに示されているように、必要な場合は REST API の名前空間例外を指定します。
ユーザーに REST API の使用を許可する
許可された (ログインしている) WordPress ユーザーに制限なく REST API の使用を許可する場合は、「ログインしているユーザーに REST API を許可する」を有効にします。
WordPress REST API へのアクセスを IP アドレスで制限する
特定の IP アドレスまたは IP ネットワークからの REST API へのアクセスを許可するには、それらをホワイト IP アクセス リストに追加します。
特定の IP アドレスまたは IP ネットワークからの REST API へのアクセスを完全にブロックするには、それらをブラック IP アクセス リストに追加します。
続きを読む: IP アクセス リストを使用して WordPress を保護する
REST API ユーザーの列挙を停止する方法
ユーザーのデータへのアクセスをブロックし、REST API 経由でユーザーの列挙を停止するには、[強化] タブの[REST API 経由でユーザーのデータへのアクセスをブロックする]設定を有効にする必要があります。このセキュリティ機能は、ハッカーがサイトをスキャンしてユーザー ログインやユーザーの機密データを検出し、阻止するように設計されています。
有効にすると、Cerber は REST API へのすべてのリクエストをブロックし、HTTP 403 エラーを返します。このようなイベントは、[アクティビティ] タブで監視できます。これらは「REST API への要求が拒否されました」としてログに記録されます。
WordPress REST API を介したユーザーのデータへのアクセスは、次の 2 つの場合に常に許可されます。
- 管理者アカウントの場合、つまり、REST API 経由の「ユーザー列挙の停止」が有効になっている場合、管理者ロールを持つすべてのユーザーが常にユーザーのデータにアクセスできます。
- ホワイト IP アクセス リスト内のすべての 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 サイト モードを有効にして、すべての WP Cerber インスタンスを 1 つのダッシュボードから管理します。
WordPress のセキュリティを強化する次のステップ
- スパムユーザー登録をブロックする方法
- スパムフォームの送信をブロックする方法
- WordPress ユーザーをブロックする方法
- 特定のIPアドレスからのアクセスをブロックする方法
- 特定のユーザー名の使用を無効にする方法
そもそも、Cerber Security とは何ですか?これは、シンプルかつ効果的なログイン試行制限プラグインから進化した、WordPress 用の完全なセキュリティ ソリューションです。
HansR ( )
OK. But how do I know whether a plugin uses the REST API so I have to add it to the namespace access-list?
Gregory ( )
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.
HansR ( )
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.