.htaccessを使ってファイルごとにアクセス制御を行う

サーバー上に置いてはいるけどこのファイルは見せたくない…そんな場合に便利な小技を少し解説します。.htaccessを用いて設定します。

.htaccessによるアクセス制御

  • <Files “hoge.php”> ~ </Files>の間に設定を記述することで、そのファイルに対してのみの制御を行うことができる。
  • Allow from (アクセスを許可するIPやリモートホスト)やDeny from (アクセスを拒否するIPや(略))でアクセスを制御できる。
  • スパムコメント対策などにも用いられる手法。投稿されたコメントを処理するファイルを防御する。

<Files “hoge.php”> ~ </Files>による設定

.htaccessによる設定は、通常では設置されたディレクトリ(とそのサブディレクトリ)全体に適用されます。ディレクトリ全体にアクセス規制を敷いたりしたい時に使われるので、それはそれでありがたいのですが、時には特定のファイルだけに設定を適用したい時もあります。そんな時に<Files “hoge.php”> ~ </Files>を使います。例えば、 [VIM] Deny from all [/VIM] こんな感じの記述をすれば、hoge.phpにはHTTPでのアクセスができなくなります。FTP(SFTP,FTPS)アカウントをハックされたりしない限りはまあそう簡単にアクセスされない(されても403エラーになる)でしょう。

上記の例のように、<Files の後に設定を適用したいファイルの名前を入れて(ファイル名はダブルクォーテーションで囲む)タグを閉じます。<Files “hoge.php”> ~ </Files>間に設定を記述していけばいいです。

冒頭でちらっと触れましたが、アクセスを許可するIPやリモートホストはAllowディレクティブで、拒否するものはDenyディレクティブで指定します。先ほどのように全部問答無用で拒否する場合は単純にdeny from allの記述で完結しますし、全部許可するなら通常は書く必要もありません(書かなければならないのはディレクトリがアクセス禁止設定になっている時に例外でアクセス許可を出す時くらいだと思います)。しかし、大抵の場合は「この場合は許可、この場合は拒否」みたいな感じになると思います。

こんな場合は、Orderディレクティブなるものも登場します。記述例はこんな感じです。 [VIM] #ホワイトリスト方式で運用する Order Deny,Allow Deny from all #↑で一旦全部拒否する(Allowディレクティブで個別に許可する) Allow from 192.168.0.1 #↑で192.168.0.1だけを許可する [/VIM] [VIM] #ブラックリスト方式で運用する Order Allow,Deny Allow from all #↑で一旦全部許可する(Denyディレクティブで個別に拒否する) Deny from 192.168.0.1 #↑で192.168.0.1だけを拒否する [/VIM] やり方はいろいろなので、詳しくは各自ググってください。

このブログを応援する・寄付する

当ブログでは暗号通貨による寄付を募っております。

モナゲボタン モナゲボタン

Bitcoin:

Monacoin:

Litecoin: