Posts tagged ‘WP REST API doesn’t work’

先日書いたが、このブログで使っているセキュリティプラグインAll In One WP Security(以下、All-in-one)の更新に伴う不具合らしきもののために管理画面にログインできなくなって、慌てた。その後調べたら、似たような問題が起こっている方が結構居て(→ )、やっぱりAll-in-oneに問題がある可能性が高く、別の もっといい(まともな)ものに換えたくなって居た。

必要な機能をリストアップしたものの、探したり試すのが面倒で放置して居た。が、昨日、ちょっとやる気が出たので試してみたら、元のものより良いものは ないうえに、プラグインには関係のない問題(REST APIが動かない)も見付かり(最後に書く)、そこでも苦労して いつものように「骨折り損の くたびれ儲け」となり、疲れた。

結局、(僕には だろうが、)All-in-oneが一番良かった。確かに どうしようもない問題が起こって信頼度や安心感は落ちたが、バージョンが大きく上がって、(人も替わって?)「たまたま」充分な動作確認ができないまま出しちゃったんだろうと想像・期待する。

まあ、某 窓に比べれば可愛いものかも知れないねw

でも、もしまた同じようなことがあったら使い続けるかは分からない。とは言え、今回の比較で、現状では いいものがないことが分かった(そもそも、All-in-oneにした時も そうだった!)ので、どうしようもないが・・・

それに、もしログインできないとかの誤動作が起こっても、緊急的にプラグインを解除して復旧させる方法が分かったので、それくらいなら大丈夫だw

 

以下、条件、候補・試したものと評価・感想を書く。

要求条件 (ALl-in-oneで使っている主な機能を重要な順に)

  • ログインページURLの変更
  • XML-RPCのブロック
    • 忘れて居たが、webサーバでブロックしているので実際には なくても良かった。
  • 非ログイン状態でのREST APIのブロック
  • 連続スパムでIPアドレスをブロック
  • ユーザーリストの禁止
  • 繰り返しのログイン失敗でIPアドレスをブロック
  • 特定ユーザー名(adminなど)でのログイン試行でIPアドレスをブロック

試さなかったもの (予選落ち)

  • Jetpack – WP Security, Backup, Speed, & Growth: 高速化がメインのようだし、関係ないものが詰め込まれているので止めた。
    • 以前、高速化で試したが、うまく動かなかったこともある。

試したもの (概ね試した順に)

  • SiteGround Security
    • 使用データの収集を許可しないと、それを促すメッセージが出続けるので止めた。
    • また、REST APIが動いて居ないというエラーも出続けた。 → あとでWP自体(またはサーバ設定)に問題があることが分かり、対処した。
  • Security & Malware scan by CleanTalk
    • 使うにはAPIキーが要る(自動的に取得できる)。
    • しばらく使うまで気付かなかったが、そのキーは有料サービス(クラウドの「ダッシュボード」, 確かUSD 6/年)の試用用(2週間しか有効でない)で、そのあともプラグイン自体は使えるが、機能としては今一つになること(例: ログが最新のものしか見られなくなる)や、最初に有料サービスであることが明示されなかったので騙された気分がしたので止めた。
    • ただ、クラウドも含めた機能としては悪くなかった。
  • iThemes Security
    • 多くのレビューのとおりで、設定画面が変(デモ版みたいな感じで、細かい設定がない)で、ちゃんと動く気がしなかったので止めた。
      • これを ちゃんと使える人は居るのだろうか??
  • Wordfence Security
    • ログインページのURLが変えられないので止めた。
      • 確かに、インストール前に見た説明にも書いてなかった。
      • 随分有名なようだが、こういう基本的なことができないのは不思議だ。
  • Hide My WP Ghost
    • ログインページのURLを変えるにはwebサーバの設定変更が要るようなことが表示されたので、止めた。
      • あと、変更先のURLが変えられない感じだった。
  • Anti-Malware Security and Brute-Force Firewall
    • 有料版でないと機能が貧弱なので止めた。
  • WPS Hide Login
    • 名前のとおり、単体ではログインページのURLを変えるだけしかできないので、面倒で止めた。
  • Defender Security
    • XML-RPCとREST APIのブロック機能がないので止めた。
    • 他の機能的は悪くなかったものの、無料版はいろいろ惜しい一方で、有料版は かなり高い(USD 7.5/月)。
    • アメコミ的な絵(スーパーマンとかMr. インクレディブル風)は好みが分かれるw、というか要らない。

最後に残った候補 (決断する ちょっと前に良さそうだと思った順に)

  1. Security & Malware scan by CleanTalk
  2. All In One WP Security
  3. Defender Security

ひとまずCleanTalkを試すことにしたのだが、良く考えてみると、機能面ではCleanTalkが断然いいということはなく、総合的にはAll-in-oneのほうが良さそうだと気付き、(耐え難いものを耐えて)All-in-oneに戻った。

そして、最後の判断材料とした2つの比較を示す。

  • All-in-one
    • 長所
      • 必要な一通りの機能が揃っている。
        • 実際には ものすごく多くの機能がある。
      • 設定が細かくできる。
      • スパムコメントのブロックもできる。
      • 本当に無料で使える。
        • 有料版も あるはずだが、無料版で物足りないと思ったことがない。
    • 短所
      • WebサーバがApacheでないと使えない機能が結構ある。
      • マルウェアのスキャンは ない。
      • 近頃の信頼性(主に開発体制的なもの)に不安がある。
  • CleanTalk
    • 長所
      • ファイアウォールにSQLインジェクションのチェック機能がある。
        • これだけは欲しい。別のもので できないかと思う。
      • マルウェアのスキャンが ある。(ただ、インストールされたあと(= 既に実行されたかもしれない)にスキャンするので、ほとんど意味がない。)
      • ボットのブロックができる。(本当に悪意のあるボットは正直にUAを出す訳がないから、あまり意味がない。単なる気休め。)※
        • あとで気付いたが、この機能はAll-in-oneにもある。
    • 短所
      • 「無料詐欺」的。
      • いろいろな通知メールが鬱陶しい。(設定が なくて停められない)

※興味があって、先月の このサーバへのアクセス中のボットかららしきもの(要求ヘッダに"bot"か"crawl"が入っているもの)を調べたら、2割未満だった。少なくはないが、中には悪性でない(とされる)もの(例: Google)も多いだろうから、ムキになってブロックするほどでもないと感じた。

 

最後に、頭に少し書いたREST APIの問題について。

SiteGroundでREST APIがエラーになったのが気になって調べた。: セキュリティプラグインのREST APIのブロックを解除してもエラーになった。最初はwebサーバの設定が悪いのかと思って試行錯誤したが、そうではなく、WordPressの既知の問題のようだった。

どういうことかというと、WordPressは ある時勝手にREST APIを追加したが(そもそも、これが何のためかも分からないし、普通に動かしているとセキュリティ上の問題になるのがおかしい)、普通の設定だと使えないことが多いのだ。

そのため、ちゃんと動かないので、特別ブロック・対処していないサイトでも 瓢箪から駒的に安全になっている・・・

そういう点ではWPは大変良くない感じで脱却したい気はするが、プラグインどころの騒ぎじゃないし、いろいろ手を加えて便利に使って居るので簡単ではない。

動かないのはセキュリティ面でいいものの、意図せず(何かの問題で)動かないのは気に入らないので、調べて動くようにした。結局、以下のいずれかをすればいいようだったが、このサーバでは最後のものしかうまく行かなかった。

  • WPのパーマリンク設定をpost nameにする。 (→ 参照)
  • REST APIのURL: /wp-json/*を/index.php/wp-json/*に換える。 (→ 参照)
    • /index.php?wp-json/* という情報もあった。
    • Webサーバなどの設定で行う。
  • REST APIのURL: /wp-json/*を/?rest_route=/*に換える。 (→ 参照1 → 参照2)
    • Webサーバなどの設定で行う。

それで、Webサーバの設定を変えるのは大ごと(いつも苦労している)なので、手軽に、WPのURL書き換えプラグインRewrite※にルールを追加して対処した。以下のようにした。

最後に追加:

    • Pattern(元): wp-json(/.*)$
    • Match(書き換え後): rest_route=$matches[1]
    • 動作: 元のURLの"wp-json"以降("/"も含む)を"rest_route="のあとに付ける。
      • 上のページでは、書き換え後には/?が先頭にあるが、なくても動作した。おそらく、ここに来る前に付いている(相当な)のだろう。

※このRewriteは便利なのだが、WPの元々のルールに場当たり的に追加して来ているので、なくてもいいものや良くない動きをしているものがありそうだし、何かあったら回復できないので、なかなか爆弾的なものだ。

まあ、そもそも「これ、何に使ってんの?」、「何か いいこと あるん??」って聞きたいくらいだから、直しても何もいいことはないが、(いつものように)気分の問題で直した。

 

まあ、これで一個でもTODOが消化できたのは良かった。しかも、気付いていなかった問題も直せた。

終わってみると、全部、(ちょっと我慢すれば)やらなくても良かったことのような気がしないでもないが・・・w

 

PS. 全く関係ない話。ブラームスを茶化したツイートがあった。: もし彼が今生きていてSNSでメッセージを送ったら、受け取った相手が「あなただけ なんでそんなに長いのよ」と嘆く場面で笑った。彼は何か 言い訳してた気がするが覚えてない。: ブラームス(の曲)は好きじゃないが、僕も同じ類だwww

  •  0
  •  0
Keys: , , , , , , , ,