エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


Basic認証をファイル単位・URL単位で設定する方法の解説

      2016/07/02

ファイル単位で Basic認証を設定する方法

 
Basic認証は、簡単に認証処理を設置できる仕組みとして、レンタルサーバなどでも広く利用されている仕組みです。
 
広く利用されている方法としては、フォルダ単位に認証を設定する方法だと思いますが、Basic認証はファイル単位で設定することも出来、特定のページ(特定の URL)に Basic認証を設定することも出来ます。
 
ファイル単位の設定方法を説明しながら、フォルダ単位の設定方法の違いも説明します。
 
ただ、Basic認証の基本的な処置については分かっていることを前提としていますので、Basic認証の細かな説明については割愛いたします。
 
 
ちなみに、難しい説明は分からないけどとりあえず設定できればいい、と言う方に対しては設定のためのツールを作成しましたので、「Basic認証の.htaccess、.htpasswd生成ツールと解説 」より作成をしてみてください。
 
 

Basic認証でフォルダ単位で設定する場合とファイル単位で設定する場合の違い

 
Basic認証を設定する .htaccessの違いを見てみましょう。
 
フォルダ単位の Basic認証の設定は以下の感じです。
.htaccess
————————————————-

AuthUserFile /wordpress/wp-admin/.htpasswd
AuthGroupFile /dev/null
AuthName "Member Only"
AuthType Basic
require valid-user

————————————————-
 
 
ファイル単位での Basic認証の設定
.htaccess
————————————————-

<Files wp-login.php>
AuthUserFile /wordpress/wp-admin/.htpasswd
AuthGroupFile /dev/null
AuthName "Member Only"
AuthType Basic
require valid-user
</Files>

————————————————-
 
こんな感じで 1行目の「<Files wp-login.php>」と 7行目の「</Files>」の部分が追加されています。
 
ここで設定したように通常はフォルダ単位で設定する記述を「<Files wp-login.php>」「</Files>」で囲むだけでファイル単位で Basic認証を設定することが出来ます。
そして、「<Files……」の部分に Basic認証の設定をするファイルを指定するだけです。
 
違いはそれだけで、非常に簡単です。
 
また、ファイルの指定は、.htaccessを置くフォルダと同階層にあるファイルに限られます。相対パスや絶対パスなどで違うフォルダにあるファイルを指定することは出来ません。指定しても有効になりません。
 
 
複数のファイルの指定をする場合は、1行目の「<Files wp-login.php>」の部分を下記の様に修正します。
 
————————————————-

<Files ~ (wp-login.php|wp-login-change.php)>
AuthUserFile /wordpress/wp-admin/.htpasswd
AuthGroupFile /dev/null
AuthName "Member Only"
AuthType Basic
require valid-user
</Files>

————————————————-
 
また、「*」や正規表現を使って複数のファイルを指定することもできるようになっていますので、複数のファイルを設定する場合は試してみてください。
 
 

こんな設定の仕方もある  2014.09.10 追記

 
「<Files …> ~ </Files>」の囲み方ですが、下記のような囲み方でもファイル単位の Basic認証を設定することができます。
 
————————————————-

AuthUserFile /wordpress/wp-admin/.htpasswd
AuthGroupFile /dev/null
AuthName "Member Only"
AuthType Basic
<Files wp-login.php>
require valid-user
</Files>

————————————————-
 
ただ、全体を「<Files …> ~ </Files>」で囲む方法では、下記の様にファイルごとにパスワードファイル(.htpasswd)を指定することができます。
 
.htpasswdに設定するパスワードを変えることで、ファイルごとにログインできる ID、PASSを変えることができ、よりセキュリティを高める設定をすることも可能となっています。(とは言え、こんな使い方する場面が思い浮かびませんが....ユーザごとにページを作る場合とか便利なのかも??)
 
————————————————-

<Files wp-login.php>
AuthUserFile /wordpress/wp-admin/.htpasswd
AuthGroupFile /dev/null
AuthName "Member Only"
AuthType Basic
require valid-user
</Files>

<Files wp-login-aaa.php>
AuthUserFile /wordpress/wp-admin/.htpasswd2
AuthGroupFile /dev/null
AuthName "Member Only No.2 File"
AuthType Basic
require valid-user
</Files>

————————————————-
 
これでも分かりますが、「.htpasswd」は、デフォルトで設定されるファイル名というだけであり、パスワードのファイル名は「.htpasswd」でなくても問題ないということですね。
 
 
[amazonjs asin=”4797361190″ locale=”JP” title=”体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践”]
 

「.htaccess」「.htpasswd」は見えないようにする設定

 
Basic認証を設定する「.htaccess」「.htpasswd」の 2ファイルは、非常に重要なファイルですので、その 2ファイル自体にアクセス制限を設定しておく方がいい場合もあります。
その場合は、下記の記述を上記の「.htaccess」の「<Files wp-login.php>」の前に記述を追記するといいでしょう。
 
————————————————-

<Files ~ "^.(htaccess|htpasswd)$">
deny from all
</Files>

————————————————-
 
ここで設定する「<Files…….」の設定部分が、先に説明したファイルに Basic認証を設定する部分と同じくファイル単位のアクセスの制限を設定する、という方法です。
記述の仕方が Basic認証と同じことが同じであることが分かるでしょう。
 
 
ちなみに、重要なファイルナのため「.htaccess」「.htpasswd」の 2ファイルにはアクセス制限をした方がいいと書きましたが、これらのファイルは非常に重要すぎるため、サーバ全体でアクセス制限をしている場合がほとんどです。
そのため、事前にこれらのファイルにアクセスをしてみて、「403 Forbidden」のエラーメッセージが出てくるようであれば、すでにアクセス制限の設定がされている状態ですので、わざわざ追加で設定をしない方がいいでしょう。
もしかするとせっかくアクセス制限がされているのに、間違って設定をしてしまうことで、アクセス制限が有効に機能しなくなる可能性もありますので。
 
 

この記事を書いた経緯

 
この記事は、もともと WordPressの管理画面のログイン URLに Basic認証を設定したい、と思ったところから始まっていまして、それに付随する形で、WordPressの管理画面のログインに絡むセキュリティの記事として下記の 3記事を書きました。
 「管理者のアカウント adminを変更する」
 「WordPressの管理画面ログインURLの変更方法解説」
 「WordPressの管理画面ログインURLファイルにBasic認証を設定する方法解説」
 
そして、それに付随する特定のファイルに Basic認証の設定する、という部分だけを抜き出して記事にしたものがこの記事になりますので、Basic認証を設定する対象のファイルが「wp-login.php」という WordPressの管理画面のログインファイルになっているわけです。
 
Basic認証の設定は WordPressに限ったものではありませんが、WordPressの管理画面のログイン画面周りのセキュリティを高めたいという方は上記の記事を参考にしてみてください。
 
 

Basic認証関連の記事まとめ

 
Basic認証関連の記事もいろいろと書いていますので、あわせて参考にしてみてください。
 
 ロリポップで baserCMSを利用する際の Basic認証の設置には注意しましょう
 WordPressのログイン画面 URLを変更する 管理画面に Basic認証を設定する
 WordPressの管理画面ログインURLの変更方法解説
 WordPressの管理画面ログインURLファイルにBasic認証を設定する方法解説
 Basic認証をファイル単位・URL単位で設定する方法の解説
 ロリポップでWordPress+Basic認証で不具合発生!回避方法解説
 Basic認証の.htaccess、.htpasswd生成ツールと解説
 WP Basic AuthなどWordPressにBasic認証を設定するプラグインのまとめ
 WordPressのカテゴリ単位・フォルダ単位でBasic認証を設定する方法
 WordPressで特定のURL、ページ、ファイル単位でBasic認証を設定する方法

 - WordPress

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

BackWPupでバックアップ・データベース保存の自動設定例

BackWPupその8。DBを毎日1回バックアップする具体的事例での説明です。

WordPressのカスタムフィールド、カスタム投稿、カスタムタクソノミーとは?

WordPressのカスタムフィールド、カスタム投稿、カスタムタクソノミーの基本的な内容を解説。お薦めのプラグインと編集方法も解説しサンプルソースなども紹介。

Advanced Custom Fields(ACF)のアドオン・繰り返しフィールドの使い方解説

Advanced Custom Fieldsのアドオン・繰り返しフィールドについて解説。繰り返しフィールドは投稿者が入力フィールドを追加しながら情報を入力できるフィールドを提供。

WordPressのSEOタイトル、キーワード、ディスクリプション編集解説

ヤフーやグーグルの検索結果を見ながらSEO視点でタイトル、ディスクリプションを書く際の基準を解説!スマホ対策も解説!

ロリポップでWordPress+Basic認証で不具合発生!回避方法解説

ロリポップサーバでWordPressを使いBasic認証を設定する際には注意しないとWordPressが動かなくなる場合も!その回避方法を解説します。

SMTP Mailerでスパム判定回避。WP Mail SMTPで発生する送信エラーも対応
SMTP Mailerでスパム判定回避。WP Mail SMTPで発生する送信エラーも対応

WordPressからのメールをスパム判定されずに送信する「SMTP Mailer」の解説。SMTP MailerはPHP 5.6、7.0になってもSMTP接続でエラーにならない設定を搭載しているのが特徴。

Contact Form 7の使い方・引数で情報を受け渡す方法

Contact Form 7で引数の情報をフォームに編集する方法を解説します。

FC2からWordPressに引越でcanonicalとmeta refreshで転送設定

FC2からWordPressに引越する際の転送設定はcanonicalとmeta refreshの設定でユーザへもGoogle検索エンジンにも引越し情報を伝えられます。

WP Mail SMTPはPHP5.6、7.0系ではメール送信時にエラーが発生。その対処方法。
WP Mail SMTPはPHP5.6、7.0系ではメール送信時にエラーが発生。その対処方法。

PHPのバージョンを5.6(7系含む)にアップデートしたらプラグイン WP Mail SMTPを利用してSMTPサーバ経由して送信していたメールが送信できなくなった。その原因と対処方法を詳細解説。

seesaaからWordPressに引越。インストールなど必要な全てを解説

seesaaブログからWordPressへの引越し解説。他のブログにはないseesaaブログからcanonicalとリダイレクトの設定方法を実装!