ローカル&トレンド【ちゃぶだい】というサイトを運営しているのですが、先日セキュリティ対策をしていないなと気づきまして、下北沢情報サイト【しもブロ】とかでも使っているメジャーなプラグイン「All In One WP Security」を導入しました。
まあ、設定自体は慣れているのでサクッと設定して、これまで通り運用していたのですが、ふとページ下部にあるコンテンツの追加読み込みのリンクが動作していないことに気がつきました。
そうそう、この一番下の「LOAD MORE」という部分ですね。ここをクリック・タップすると過去のコンテンツが追加で表示されるのですが、それが機能しない。スマホだけかなと思ったわけですが、パソコンのブラウザでも動かないわけです。
で、以前は動作していたことから、タイミング的に「All In One WP Security」の設定に問題があると気がつきました。が、色々な設定を見直しても全然上手くいかない、、、。ちょっと現状を確認しようと、デベロッパーツールで確認するとクリックしたタイミングで以下のようなエラーが表示されました。
▶ POST https://chabudai.jp/wp-json/csco/v1/more-posts 500
REST APIで500エラーですね。うん、どう考えても「All In One WP Security」の設定だろうなと思い、再び全項目をチェックしたところ、ありましたよありました、「WPセキュリティ→その他→WP REST API」の「Disallow unauthorized REST requests:」がそのものズバリでしたね。
REST エンドポイントを登録した他のプラグイン (Contact Form 7 など) を使用している場合は、この機能はユーザーがログインしていない場合に、これらのプラグインが使用する REST 要求もブロックすることに注意してください。
とか書かれていてプラグイン的には問題ないと思っていましたが、私が使っているテーマ「UPPERCASE」ではRESTを使っているのでこんな不具合が発生していたわけです。あー、原因が分かって良かった。そうなんだよな、ログインしてるときはちゃんと機能していたんだよね、、、。なんというか、パソコンでログインした上でチェックだけじゃなくて、ちゃんとユーザと同じくログインしていない環境で確認すべきだなぁ。
ちなみにWordPressとRESTというと、2017年に発生した脆弱性(WordPress4.7.0 or 4.7.1)がハイパー有名です。155万を超えるサイトが改ざんされたりして、有効にするのは危険じゃないかと思われる方もいそうですが、この問題はWordPress4.7.2で修正され、それ以降REST APIの脆弱性は報告されていません。まあ、問題なかったら制限しちゃうのはもちろんアリだと思いますが、「UPPERCASE」のようにテーマでREST APIを使っている場合もあるので、WordPressを使っているサイトでこの手の動作不具合が起きたらセキュリティプラグインのREST APIの設定を疑ってみましょう。
ちなみに「All In One WP Security」自体は全然悪くないっす、設定の問題ですからねー。防御してくれてありがとう。まあ、WordPress本体やプラグインそしてテーマをちゃんとバージョンアップするのは、何よりも重要だと思います。