こんにちは、ブロガーのレイです。
ぼくはこのブログをWordPressで運営しています。
ある時から急にブログでこんな現象が発生するようになりました。
ただページを表示するだけなのに、こんなパスワードを入力させる画面が表示されるようになったんです。
この現象の原因と対処方法をまとめました。
パスワードを要求された2つの原因
よく調べてみたら、この現象が発生した原因は2つあったんです。
それも、1つの原因だけの時にはこんな事は起こらず、2つの原因が重なった時にこんな事が起きてしまいました。
原因はこの2つです。
- 管理画面にBasic認証をかた
- WordPressのプラグイン「Aurora Heatmap」を導入した
Basic認証
まず最初の原因はBasic認証です。
これは何かというと、Webサイトにアクセス制限をかけるものです。
このブログは管理画面の安全性を高めるために、WordPressで行うログインとは別の認証をつけています。
WordPressで行うログインは、ブログをやっている人ならおなじみのこんなやつ。
WordPressのログイン画面
Basic認証をかけると、このログインに加えて別のIDとパスワードを入力しないと管理画面には入れません。
WordPressのログインが成功しても、さらにこんな感じで別の認証を要求されます。
このことから、ブログを表示した時に何かが管理画面にアクセスしようとしてるのが分かりました。
Aurora Heatmap(プラグイン)
Aurora HeatmapはWordPressのプラグイン。
Aurora Heatmap – WordPress プラグイン | WordPress.org 日本語
ブログを読んだ人がどのあたりをクリックしているのかが、画面の色で一目でわかる便利のもの。
色がついている場所がよく見られている場所です。
実はこのプラグインが管理画面にあるファイルにアクセスしていたんです。
正確にいうと管理画面の機能がまとめて入ってある「wp-admin」フォルダの中にある、PHPファイルにアクセスしています。
Aurora Heatmapでは、wp-admin内の「admin-ajax.php」にアクセスしていました。
だから管理画面にログインしていない、一般のユーザーがブログに訪れた時にBasic認証でパスワードを要求される事態が発生してしまったんです。
一方、ぼくの場合には基本的にはいつも管理画面にログインしています。
管理画面にログインしているということは、Basic認証でも認証済みです。
だから、Basic認証でパスワードを要求されずこの現象に気づかなかったんですね。
パスワードを要求されないようにする対処法
このようにブログを訪れた人が毎回パスワードを要求されるのはとてもマズいです。
めちゃくちゃうっとうしいですよね。
そこで解決策を2通り挙げておきましょう。
対処法1:アクセス制限を解除する
最初の対処法はBasic認証によるアクセス制限をやめてしまう方法。
簡単に対応できるのがメリットですね。
一方、セキュリティの面では一段低くなってしまうのがデメリット。
アクセス制限を解除する方法は大手のレンタルサーバーを使っている場合には、簡単なことが多いですね。
ぼくは「エックスサーバー」を使っているので、アクセス制限の設定・解除方法を載せておきます。
エックスサーバーにログインして、「サーバーパネル」に入ります。
「アクセス制限」をクリック。
ブログの中にある「wp-admin→アクセス制限」を「OFF」に変更。
これで管理画面に入るBasic認証は解除されるので、他の人がブログを見に来てもパスワードを要求されなくなりました。
対処法2:特定のファイルへのアクセス制限を解除する
セキュリティを落としたくないので、Basic認証を残したままAurora Heatmapも使う方法です。
これはAurora Heatmapの作者さんが、わざわざTwitterで教えてくれました!
作者のR3098です。
Aurora Heatmapでは、ヒートマップデータの送信のため、Ajax通信を行っています。
よって、wp-admin配下すべてにBASIC認証を掛けるとそのような挙動になります。
もちろん、計測もできません。— R3098@ウェブプランナー (@us_azu) May 24, 2020
セキュリティ観点だとは思いますが、WordPressの仕様でも非ログインユーザーからのAjax通信もwp-admin/admin-ajax.php にアクセスできる必要があります。
wp-admin/admin-ajax.phpを対象外にすると、解消できると思います。— R3098@ウェブプランナー (@us_azu) May 24, 2020
Aurora Heatmapを導入すると、認証画面が表示される場合はwp-admin/admin-ajax.phpにBASIC認証が掛かっていないかチェックしてみてください❗ #AuroraHeatmap #WordPress https://t.co/lV4CguAhxv
— R3098@ウェブプランナー (@us_azu) May 25, 2020
ここでは「wp-admin/admin-ajax.php」をBasic認証の対象外にするように設定していきます。
バックアップ必須です!!
ここではサーバーに置かれているファイル.htaccessを修正します。
このファイルはとても重要なファイルで、修正を間違えるとブログが見られなくなったり、動きがおかしくなってしまう可能性も。
必ずバックアップを取ってから作業しましょう!!!
不具合が起きた場合には、すぐにバックアップを取っておいたファイルを元の場所に戻せば直せますので。
.htaccessの修正は「エックスサーバー」なら、「ファイル管理」からファイルをダウンロードして、再度アップロードすればできますよ。
もちろんFTPソフトを使ってやってもOKです。
ファイル管理はこちらから
ずっと中の方へ入っていって「wp-admin」の中に入ると「.htaccess」が見つかりました。
「.htaccess」をクリックすればファイルがダウンロードされるので、内容を修正します。
隠しファイルを見えるようにする
ここでひとつ注意です。
「.htaccess」はパソコンの初期設定では見えません。
ダウンロードしたらパソコンの設定で隠しファイルを見えるように設定してください。
やり方は次の通りです。
- 「タスクバー」→「エクスプローラー」
- 「表示」→「オプション」→「フォルダーと検索のオプションの変更」
- 「表示」タブ→「詳細設定」→「隠しファイル、隠しフォルダー、および隠しドライブを表示する」
参考:Windows 10 の隠しファイルと隠しフォルダを表示する
Macの場合にはショートカットキーで簡単。
「Shift」 + 「command」 + 「.」
それでは.htaccessファイルのどこを修正するか見ていきましょう。
まずはこれが修正前のファイルです。
Basic認証しますよ!と書かれています。
このファイルをこのように修正しました。
この内容を追記します。
<FilesMatch "(admin-ajax\.php)$"> Satisfy Any Order allow,deny Allow from all Deny from none </FilesMatch>
追記したファイルをもとあった場所にアップロードすればおしまいです。
これで一般のユーザーがブログを訪れてもパスワードを要求されなくなりました。
もちろんAurora Heatmapもきちんと表示されるようになりましたよ。