ブログエディターから記事を投稿しようとしたらAPIのエラー表示。
エラーの内容は以下のようなものでした。
Can’t refresh blog for ブログ名 because the server reported an error: the server did not return a valid API response.
Often this is caused by the security configuration of a web server, by a faulty plugin on your blog, or by an incorrect API Endpoint URL setting in MarsEdit.
MovableTypeを使っているブログでのみ発生。
サーバーはXserverになります。
ブログエディターからサーバーに記事を送信したり更新するのは、XML-RPCというAPIを使っていますが、今回のエラーはそのAPIに接続できないことから発生しています。原因はサーバー側によるものということで調べてみると、Xserverのセキュリティ機能が影響しているという話がありました。
XserverのWordPressセキュリティ設定が強化された2020年頃からこのエラーが報告されていて、それによると、ログイン試行回数制限という設定にXML-RPCのAPIも含まれたことで、何らかの理由でXML-RPCがこのログイン試行回数制限に引っかかってしまうと、ブログエディターから接続できなくなるということでした。
しかし、なぜこの制限に引っかかったのか?
原因はMovableTypeの脆弱性か?
調べてみると、MovableTypeのXML-RPCに脆弱性が発見されたとして注意喚起がなされていました。
しかも、かなりヤバめな脆弱性です。
おそらくこれが原因?誰かがXML-RPCのAPIを叩きまくった結果、アクセス制限がかかったのでしょうか。
とりあえずMovableTypeをアップデートしましょう。WordPressと比べてめっちゃ面倒臭いけど。
旧バージョンから Movable Type 7 へアップグレードする
アップデート作業のためにFTPでサーバーにアクセスしたら、エラーが出た原因が分かりました!
mt-xmlrpc.cgiのパーミッションが00になってます。
アクセス制限に引っかかって自動的に変更されたのか、それともXserver側が緊急的に対処としてパーミッションを変更して使えなくしたのかは不明ですが、もし後者ならメールで連絡くらいくれよな。
ちなみに、ログイン試行回数制限の対処法ですが、Xserverのサーバーパネルから、WordPressの設定に移動して、WordPressセキュリティ設定のログイン試行回数制限設定をOFFにするという手順が紹介されていました。
Xserverのログイン試行回数制限設定は、短時間に連続的にログイン処理が行われた場合に自動で発動するものですが、一度制限に入ってしまうと設定をOFFにしてもすぐには制限解除されないようになっています。
アクセス制限が入った場合、解除されるのは24時間後。
場合によってはそれまで待たされることになりますが、今回のXML-RPCのエラーはMovableTypeをアップデートしてパーミッション変更すれば解消されるでしょう。