.htaccess
ファイル、又はディレクトリ単位でアクセス制限が可能ですが、サーバー依存です。
サーバーによっては使用できないことがありますので、詳しくはサーバー管理者に問い合わせてください。
BASIC認証 §
BASIC認証とはファイルにアクセスした時に、ID(ユーザー名)とパスワードの入力ダイアログを開きます。
入力されたIDとパスワードが正しく入力されないと、ファイルにアクセス出来ません。
2つのファイル(.htaccessと.htpasswd)が必要です。
.htaccessの作成 §
Code:AuthUserFile /virtual/takz/hoge/.htpasswd
AuthGroupFile /dev/null
AuthName "Dialog Title"
AuthType Basic
require valid-user
- 1行目は、htpasswd(ID・パスワード)ファイルの位置
- 2行目はグループファイルの位置、作成しないので null とする
- 3行目はダイアログのタイトル
- 4行目は認証タイプ
- 5行目は認証するユーザー名。すべてのユーザーに認証させるので valid-user とする
- 改行は全ての行に必ず入れる。パス(ファイルの位置)は絶対パスで記述。
.htpasswdの作成 §
Code:.htpasswdUserName1:hogehoge
UserName2:hogehoge
- .htaccess同様必ず全ての行に改行を加える
- :の前にユーザー名、後ろに暗号化(ハッシュ化)されたパスワードを記述します。
BASIC認証(サーバ) §
アクセス制限をApacheに直接記述して、パスワードはコマンドラインで生成する。
Apache(httpd.conf)の設定 §
Code:httpd.conf<Directory "/home/httpd/html/hoge">
AuthType Basic
AuthName "DialogTitle"
AuthUserFile /home/hoge/.htpasswd
Require user UserName
</Directory>
- 480行目付近 UserDir public_html セクションに記述
- 記述内容は上記とほぼ同じだが、こっちはユーザー名を限定させている。
パスワードの生成 §
Code:shell$ su -
# cd /home/hoge/
# htpasswd -c .htpasswd UserName
New password:*****
Re-type new password:*****
Adding password for user UserName
# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
#
- ファイルを作る位置はpublic_htmlより上の階層にして
- 通常ではアクセスできない位置に置くのがベスト
- サーバを再起動させないと有効にならないので注意
ファイルの直読み制限 §
特定のファイルを直リンクさせない為にRefarerで制限させる。
画像ファイルなど直リンク防止に有効
Code:.htaccess.htaccess
SetEnvIf Referer "hoge.com" Ref_ok
Order Deny,Allow
Deny from all
Allow from env=Ref_ok
- Refererがhoge.comの場合のみ参照できるようになってます。
- このファイルを置いたディレクトリからサブディレクトリ全てに適応されるので注意
参照禁止 §
見られてはいけないファイル(掲示板のログファイルなど)を404エラーを出しアクセスさせないようにします。
Code:.htaccess<Files ~ ".(inc|htpasswd|htaccess|dat)$">
Deny from all
</Files>