Basic認証・パスワード制限

特定の人に意外に見せたく無いページを作りたい

特定の人にしかみられたくないページを作る場合は、 .htaccessを使ったBasic認証か、CGIを使ったパスワード制限を使う事をおすすめします。

よく、URL請求制やURLクイズ制(隠しページは「○○」.html。○○を答えてください。)といった方法を見かけます。 初心者でも気軽に隠しページが作れ、環境を問わないのが長所ですが、セキュリティ面から決しておすすめしません。

確かに、URL請求制やURLクイズ式は最初に入る時こそ効果を発揮します。 しかし、いちど入られてしまえば、隠しページのURLがバレてしまいますから、 普通に外部から直接リンクを貼る事も可能です。 そうなると当然ロボットの侵入も可能だと言う事です。

同じく、JavaScriptによるパスワード制限も、隠しページのURLがバレてしまっては、 上記と同じ問題が発生しがちですし、作り方によってはHTMLソースを見ただけでパスワードが分かってしまう場合もあります。

Basic認証(基本認証)

.htaccessによるパスワード制限です。最初はとっつきにくいですが、 作業的には簡単な上、非常に強固なセキュリティになりますから一番おすすめできます。 Basic認証で守られた内側に検索ロボットは決してはいる事ができません。

Basic認証の見本ページ
ID = [guest] PASS = [1234] で入る事ができます。

Basic認証は設置したフォルダ内すべてのファイルに有効です。 たとえば、「ura」と言うフォルダにBasic認証をかけ裏ページを作成した場合、 「ura」に含まれるどのファイル(html、画像など)にアクセスしてもパスワードが求められます。 (一度認証されれば、ブラウザを終了させるまで再びパスワードを要求される事はありません)

Basic認証には2つのファイルが必要になります。

  1. .htaccess  Basic認証用の内容が書かれた.htaccessファイル
  2. .htpasswd IDとパスワードが収納されたファイル。

Basic認証用 .htaccessの書き方

Basic認証用の.htaccessはこんな感じです。

AuthUserFile /home/yourname/hoge/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user(ここに改行をかならず)

1行目「/home/yourname/hoge/.htpasswd」は、 パスワード収納ファイル.htpasswdの位置を指定しています。 これはその環境によって書き直す必要があります。この 「/」から指定した位置指定は「絶対パス(フルパス)」と呼ばれ、 各サーバのオンラインマニュアルなどに記載されていますので、それを参考にしてください。
またはフルパスを取得するCGIも配布さていますので、それを利用する事もできます。

3行目「Please enter your ID and password」は、 IDとパスワードを要求するダイアログに表示されるメッセージにあたり好きに書き換え可能です。 日本語も利用可能ですが、文字化けする場合もありますので英語で書く事をおすすめします。

.htpasswdの書き方

.htpasswdは下記のような書き方をします。

hana:uCrAxQx.vR3dU
neko:aWSd50LaM.UU.(ここに改行を必ず)

口語訳

IDが「hana」の人はパスワード「bara」で入室可能
IDが「neko」の人はパスワード「mike」で入室可能

【ID】:【pass】と言う形です。IDを追加したい場合は改行してその分追加していけばOK。

まず、Basic認証を設置した事の無い人は、上の例を見て 「uCrAxQx.vR3dUなんてちっとも baraじゃ無いじゃん!」と思っていると思います。
実は、.htpasswdに直接アクセスされて覗かれてしまうと、パスワードが流出してしまう恐れがあるので 「パスワード部分を暗号化して書く」という決まりがあるのです。 「bara」をcrypt関数と言うもので暗号化すると「uCrAxQx.vR3dU」になります。

そこで問題になるのが、どうやってパスワードを暗号化するか、ですね。
心配ご無用。世の中には暗号化ツールが色々公開されています。

これらを使って、IDとパスを作成すれば良いのです。
よくBasic認証の説明に「telnet」というものが書かれています。 これは上記のような外部ツールに頼らず自分で暗号化する方法になります。 しかし、せっかく暗号化ツールが公開されているのですから素直に頼ってしまった方が簡単です。

.htpasswdも.htaccessと同じくこの名前でいきなり作ると、パソコン上で見えなくなってしまう事があります。 やはり.htpasswd.txtなどの名前で一度ファイルを作成して、FTPアップロード後、FTPソフトで名前を変更するようにしてください。
.htpasswdの名前は、.htaccessに記述するフルパスさえ間違えなければ、「.hogehoge」でも何でもかまいません。

CGIによるパスワード制限

.htaccessが使えないのなら、CGIでパスワード制限をかける方法もあります。
フリーのパスワード制限用CGIを設置して、そのCGIに正しいパスワードを送信しないと、 隠しページが見られなくなると言う方法です。利用するCGIによって設置方法や特徴が違うので、 詳しくは書きませんが、下記のような所から探してみてください。

共通パスワードで簡易的に制限するものから、IDとパスワードを管理し、 ログイン状態のログも取れるものまで揃っています。 あまり簡易なもだと隠したいページのURLが見えてしまったりしますので、 自分の作りたいページに合わせていくつか試してみてください。

inserted by FC2 system