htaccessの認証機能を利用することで、特定のURL(配下)にアクセスした場合、ページの表示前にパスワード認証機能を設けることができます。
この機能によりアクセス制限することで、セキュリティーを高めることができます。
当サイトでは、BASIC認証(パスワード認証)用のhtaccessファイルの自動作成ができます。
対話式にBASIC認証のhtaccessを作成することができます。
ユーザ/パスワードファイルのみ作成する場合は、下段のみ入力してください。
htpasswdを配置するパス AuthUserFile |
(例) /home/xxxx/public_html/admin/.htpasswd |
---|---|
認証画面表示メッセージ AuthName |
No | ユーザーID | パスワード (入力確認) |
暗号種類 |
---|---|---|---|
1 | |||
2 | |||
3 | |||
4 | |||
5 |
htaccessによるパスワード認証には、2種類の機能があります。
一般的で多く利用されている、ユーザーIDとパスワードによる認証機能となります。
サーバーに保管するパスワードは暗号化されていますが、インターネットで通信されるユーザーIDとパスワードは暗号化されていないため、通信を傍受された場合はユーザーIDやパスワードが分かってしまう可能性があります。
強固なセキュリティーが必要場合は、SSL(暗号化通信)や他のhtaccess機能によるアクセス制限を行う必要があります。
ほぼすべてのブラウザで利用することができ、一般的にhtaccessによるパスワード認証はBASIC認証の事を表しています。
基本的な機能はBASIC認証と同じとなりますが、BASIC認証のセキュリティーを強化するために、インターネットで通信されるユーザーIDとパスワードを暗号化しています。このため、通信が傍受され場合でもユーザーIDやパスワードが分かってしまうリスクが大幅に低下します。
ただし、古いブラウザでは対応指定など制約もあり、あまり利用されていません。
当サイトでは、BASIC認証を中心として記載しています。
セキュリティーを強固にしたhtaccessパスワード認証を行いたい場合は、BASIC認証+SSL通信をお勧めいたします。
BASIC認証でユーザーIDとパスワードを入力する画面は、クライアントのOSやブラウザ種類・バージョンによって異なります。認証画面をサーバー側で画面を指定することはできません。
以下はBASIC認証画面イメージとなりますが、バージョンで異なる場合がございますのでご注意ください。
BASIC認証を行うためには、以下のファイルを作成し、認証を行いたいサーバーの該当ディレクトリにアップロードする必要があります 。
「.htaccess」ファイルは、パスワード認証を行う条件などを指定します。当ページの上部に「.htaccess」ファイルの作成機能がありますので、是非ご利用ください。
構文 | 意味 |
---|---|
<Files ~ "^\.ht"> deny from all </Files> |
「.htaccess」「.htpasswd」ファイルを外部(ブラウザ)から見えないようにするための設定 |
AuthUserFile |
「.htpasswd」ファイル(ユーザーIDとパスワードの情報)を格納しているサーバー内のパスを指定します。 絶対パスで記載します。絶対パスが分からない場合は、サーバー管理者に確認ください。 パスを間違えると「No such file or directory: Could not open password file」などのエラーとなります。 |
AuthGroupFile |
アクセスできるユーザーをグループ分けする場合に指定します。 サンプルでは、グループの指定は無しとしています。 |
AuthName |
認証画面に表示するメッセージを設定します。 日本語も指定可能ですが、ブラウザにより文字化けする可能性があるので注意が必要です。 |
AuthType |
認証タイプを指定します。 サンプルでは「BASIC」認証が指定されています。 |
require |
認証したユーザがアクセスできるかの指定を行います。 サンプルでは、「valid-user」を指定してあり、パスワードファイル「.htpasswd」に指定されたユーザー全てをアクセス可能としています。 「valid-user」の他に「user」「group」が指定可能でそれぞれ、アクセスできるユーザーやグループを絞り込みすることが出来ます。 |
詳細な設定が必要な場合は「Apache HTTP サーバ バージョン 2.0 ドキュメント」を確認ください。 |
「.htpasswd」ファイルは、ユーザIDとパスワードを管理したファイルです。
ファイル名は「.htpasswd」でなくても構いませんが、当サイトでは一般的なファイル名「.htpasswd」で記載しています。
「.htpasswd」ファイルは、「ユーザーID:パスワード」の形式で、認証ユーザー単位に改行を行い記述します。
上記例の場合、「guest」と「suzuki」がユーザーID
パスワードは、パスワード文字列自体が暗号化されており、暗号化方式は複数あります。
上記サンプルのパスワード(「:」より右側)は1行目が「DES(crypt)」方式、2行目が「MD5」方式で暗号化されています。
おすすめは「MD5」です。
暗号化方式 | 意味 |
---|---|
DES (crypt) |
LinuxやUnixで多く利用されている暗号化方式です。 ただし、先頭8文字しかパスワードとして認識されません。 |
MD5 |
Windowsで多く利用される暗号化方式となります。 LinuxやUnixでも利用可能ですが、使用しているApacheのバージョンにより利用できない可能性がありますので注意ください。 255文字までのパスワードを指定できます。 |
上記以外にも暗号化方式はほかにもありますが、htaccessで使用する代表的な暗号化は上記2つとなります。 |
「.htgroup」ファイルは、グループとユーザIDを管理したファイルです。
グループ認証(「require」に「group」を指定)の場合のみファイルを作成する必要があります。
ファイル名は「.htgroup」でなくても構いませんが、当サイトでは一般的なファイル名「.htgroup」で記載しています。
「.htgroup」ファイルは、「グループ:ユーザーID ユーザーID ・・・」の形式で、認証グループ単位に改行を行い記述します。
上記例の場合、「keiri」と「jinji」がグループ
ユーザIDを複数記載する場合は、半角スペースで区切ります。
「require」を利用することで「.htpasswd」に指定されているユーザをさらに制限することができます。
requireの指定 | 意味 |
---|---|
user | AuthUserFile(.htpasswd)で指定されたユーザの内、特定ユーザのみ認証する |
group | AuthUserFile(.htpasswd)で指定されたユーザ かつ AuthGroupFile(.htgroup)のグループに該当するユーザのみ認証する |
valid-user | AuthUserFile(.htpasswd)で指定されたユーザすべてを認証する |
たとえば、
「.htgroup」の内容
「.htpasswd」の内容
「require user satou suzuki」の場合、
satou,suzuki以外のyamada,okazaki,takahashiは認証されない
「require group keiri」の場合、
yamada,suzuki以外のsatou,okazaki,takahashiは認証されない
「require」を利用することでディレクトリ毎に「.htpasswd」「.htgroup」を用意する必要がなくなります。サーバ全体で1つのファイルで管理することができるので、ユーザID増減のメンテナンスが向上します。