WordPress 4.4 より oEmbed など部分的に REST API が導入され、4.7 より本格的に導入されました。
しかし、困ったことにデフォルトで有効化されており、無効化するにはカスタマイズ(PHP コードを記述)するかプラグインを使用する必要があります。
そして、この REST API の脆弱性(4.7 および 4.7.1)を突いた攻撃により、多くのサイトが改ざんされたというニュースは記憶に新しいところでしょう。
REST API の無効化
REST API を使用しないのであれば、無効化しておいた方がセキュリティ的にはいいと思います。そこで、自作のプラグインに REST API を無効にする機能を追加して、無効化していました。ところが、あの超メジャーな Contact Form 7 プラグインが送信処理に REST API を使うようになったのです。REST API は無効化したいが、Contact Form 7 を使用できないのは困ります。何かいい方法はないかとググっていたら、ねんでぶろぐ様の「WordPress4.7 の WP REST API を無効にする」の記事にピッタリの方法が紹介されていました。rest_pre_dispatch フィルターフックを使用する方法でした。
早速、この方法で REST API を無効化する機能をプラグインに組み込んでみました。
プラグイン
組み込んだのは、XO Securiy プラグインというログイン関連のセキュリティを強化するプラグインです。プラグインで簡単に設定したいという方はこちらをどうぞ。
ログインログの記録やログイン試行の制限、ログインページの変更、XML-RPC の無効化、ピンバックの無効化等、 …