LoginSignup
38
38

More than 5 years have passed since last update.

WordPressの/wp-json/ へのアクセスはどうしていますか?

Posted at

WordPressのREST API

WordPress v4.7以降(だったと思います)にはREST APIが搭載されており、デフォルトで有効になってます。自社(自分)のサイトをWordPressを使って構築しているのなら、https://YourSiteURL/wp-json/でアクセスしてみてください。(インストールしているディレクトリがドキュメントルートではないなら、https://YourSiteURL/hoge/wp-json/の場合もあります)

何か表示されましたか?もしかしたら、このようなJSONが表示されていませんか?(この画面ショットではJSONを整形して表示してます)
image.png

こうなったら注意が必要です。:warning:

認証が不要なendpointがある

WordPressはAPIを使っていろいろな情報を取得できたり更新できるようになっています。この中で認証不要なendpointがあります。例えば、ユーザー情報の取得とかは認証不要です。
こんなURLでアクセスしてみましょう。

https://YourSiteURL/wp-json/wp/v2/users/1

あら不思議。管理者のアカウントが表示されていませんか?:skull_crossbones:
WordPressインストール時に作成したユーザーをそのまま管理者として利用していることが多いと思います。そのようなケースでは、管理者のアカウントが表示されてしまいます。

複数ユーザーが登録されている場合は、1を2,3,4と変更してアクセスするとユーザー情報が次々と表示されます。

このような意図しない情報公開により、こんなこともあるかと思います。

  • WordPressの運用を制作会社に業務委託しており、その制作会社名が表示されている
  • 運用担当者の実名が公開されている

WordPressの便利APIの存在を知らないと、管理者アカウント情報をWEB上で公開することになります。さすがに/wp-admin/に対するアクセスを、何の制限も設けていないずぼらな運用担当はいないと思うので、すぐに何かをされてしまうことはないと思います。(もし/wp-admin/への制限をつけてないならすぐにやりましょう!)
しかし管理者アカウントが外部に漏れたりしたらどこでなにがあるかわかりません。また担当している側にしてみたら、自分の名前が意図していないところで公開されているのは気持ちいいものではありません。

REST APIの塞ぎ方

ではAPIにアクセスさせないようにするにはどうすればよいでしょうか?プラグインを探せばありますが、信用できるプラグインでしょうか?
信用できないプラグインなら、コードを書きましょう。
私は@TanakanoAnchanさんの記事を参考にさせていただきました。

他にもあるよ

APIだけではなく、このようなURLにもWordPressは応答を返してくれます!親切?

  • /feed/
  • /rss/
  • /robots.txt

見られて問題無い情報であればよいのですが、そうでないならすぐに塞ぐようにしましょう。大抵のことは検索すればでできます。

最後に

意外とAPIのことを知らない人が多いと思いましたので、ここに投稿させていただきました。少しでも、/wp-json/にアクセスできるWordPressがなくなりますように:star:(意図して公開しているサイトを除く)

38
38
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
38