自分のWebサイトにパスワードを設定する方法

セキュリティ Webサイト管理

Webサイトを作成する際、グループだけで閲覧するようなサイトを作りたくなることがあります。システムとして構築すると面倒なのでWebサーバーの機能を使って簡単にパスワードを設定してみました。

パスワードを設定する手段

Apache(アパッチ)などのWebサーバーには『Basic認証』と呼ばれる機能が備わっています。

このBasic認証はアクセスしてきたユーザー(閲覧者)に対して、ユーザーIDとパスワードの入力画面を表示して認証する仕組みを提供してくれます。

やり方は簡単で “.htaccess” と “.htpasswd” の2ファイルを作成するだけで限られたユーザーだけが閲覧できるサイトを構築することができます。

Basic認証をする手順

.htpasswdファイルの作成

.htpasswdファイルには、ユーザーIDとパスワードを対にして書き込みます。パスワードは平文(そのままの文字列)では無く、暗号化した文字列を保存するため「テキストエディタで作成する」と言うわけにはいきません。Linuxなどでは標準コマンド(htpasswd)で作成することができますが、Windowsには機能が無いのでXAMPPを使って作成します。

  1. 作業するパソコンにXAMPPがインストールされていない場合には以下を参照してインストールします。
    参考 Windows 10 にPHPの開発環境をインストールする方法

    Win10→起動→XAMPP→停止

  2. コマンドプロンプトを起動し以下のコマンドを実行します。

    C:\xampp\apache\bin\htpasswd.exe -c C:\.htpasswd 【任意のユーザーID】
    

    htpasswd.exeの場所はXAMPPのインストール場所によって異なります。

  3. ユーザーIDに対するパスワードを求められるので入力します。

    New password:
    Re-type new password:
    

  4. C:\に以下のような.htpasswdファイルが作成されます。

    user:$apr1$ZwEiz3UM$0Bh0kvK7d85X9iHf/
    

    入力したユーザーID、パスワードによって変わります。

    .htpasswdファイルの作成場所は実行したコマンドによって異なります。

  5. .htpasswdファイルをサーバーにアップロードします。

    public_htmlなど外部からアクセス可能なディレクトリ以外へアップロードすることをオススメします。ただし、サーバーによっては許可されていないので注意してください。

.htpasswdファイルを作成するやり方は以上です。

.htaccessファイルの作成

WordPressなどを使用してWebサイトを構築していると、すでに.htaccessファイルが存在してることがあるので、その場合には既存のファイルに追記する必要があります(上書き禁止)。

  1. .htaccessファイルに対して以下の内容を追記します。

    AuthUserFile /home/user/public_html/.htpasswd
    AuthName "Enter your ID and password."
    AuthType Basic
    require valid-user
    

    “AuthUserFile” は.htpasswdをアップロードしたフルパスを記述します。フルパスは使用しているサーバーによって異なるので注意してください。

  2. .htaccessをパスワードをかけたいディレクトリーにアップロードします。

    サイト全体にパスワードをかけたい場合には “public_html” などのドキュメントルートに設置します。

htaccessファイルを作成するやり方は以上です。

これで、対象のWebサイトにアクセスすると前述したようなダイアログが表示され、ユーザーIDとパスワードの入力を促すことができるようになります。

タイトルとURLをコピーしました