私は Wordpress サイトのセキュリティを向上させることを検討していましたが、その過程で、WP REST API がデフォルトで有効になっていることがわかりました (私の記憶が正しければ、WP 4.4 以降)。
これを無効にする安全な方法は何ですか?
ここでの「安全」とは、他の WP コア機能を破壊しないなど、意図しない副作用を引き起こさないことを意味します。
考えられるアプローチの 1 つは、.htaccess
を使用してルールを書き直すことですが、驚くべきことに、これを行うための「公式」手順は見つかりませんでした。
助けやアドバイスをいただければ幸いです :)
更新: サードパーティのプラグインは私が探している解決策ではありません。このタスクを解決できるツールがたくさんあることは知っていますが、それらには Web サイトの速度を低下させる可能性のある多くの追加機能が含まれています。プラグインによる追加のオーバーヘッドを発生させずに、この問題を 1 行で解決できることを願っています。
アップデート 2: これは WordPress の公式見解です: https://developer.wordpress.org/rest-api/using-the-rest-api/frequently-asked-questions/#can-i-disable-the-rest-api p>
これによると、WordPress チームは、将来の WP 機能が新しい REST API に依存することを期待しています。これは、REST API を無効にする 安全な方法がないことを意味します。
WP のセキュリティを担当するセキュリティ専門家が十分にいることを願うばかりです。
アップデート 3:
WordPress API マニュアルに回避策があります - すべてのリクエストに認証を要求できます
これにより、Web サイトの REST API への匿名アクセスが無効になり、認証されたリクエストのみが有効になります。
P粉4784456712024-01-11 15:20:53
受け入れられた回答では、認証されていないユーザーのすべての API 呼び出しが無効になりますが、最近の多くのプラグインはこの API 機能に依存しています。
すべての呼び出しを無効にすると、予期しないサイトの動作が発生します。このコードを使用したときにも同様のことが起こりました。
たとえば、ContactForm7 はこの API を使用して連絡先情報をデータベースに送信し (おそらく)、ReCaptcha 検証を実行します。
認証されていないユーザーに対しては、次のように特定の (デフォルト) エンドポイント を無効にするのが最善だと思います。 リーリー
このようにすると、現在開かれているエンドポイントは、プラグインによってインストールされたエンドポイントだけになります。サイトでアクティブなエンドポイントの完全なリストについては、
https://YOURSITE.com/wp-json/ を参照してください。
$endpoints_to_remove 配列は要件に応じて自由に編集できます。
私の場合、
デフォルトのエンドポイント プレフィックス も wp-json から
mybrand-api に変更しました。これは、何千ものブルートフォースリクエストを行うボットに対する抑止力として機能するはずです。
リーリー
P粉5123632332024-01-11 12:47:36
著者の元の質問に基づいて、WordPress の公式推奨事項 (https://developer.wordpress.org/rest-api/using-the-rest-api/frequently-asked-questions) からオプション 2 を選択しました。 /#can-i-disable-the-rest-api)。したがって、functions.php を入力し、ログインしているユーザーのみが残りの API を使用できるようにします (ただし、コード ブロックが古い場合に備えて、元のリンクをクロスチェックしてください ;)): 更新 (2021 年 10 月 1 日):
リーリー