データファイルへのブラウザ経由(http://〜)でのアクセスを拒否する方法.htaccess活用法(5).htaccess(拡張子がhtaccessということで、ドットが必要です。ファイル名がないので最初戸惑いますが、こういうものだと思ってください。)が利用可能だと、アクセス制限(Basic認証)が可能。特定のホスト(IPアドレス。Foundページのカスタマイズが可能。拡張子別に文字コードを設定することが可能。(文字化け対策に必須の場合があります。)index.cgiやindex.phpをトップページにすることが可能MIMEタイプの設定が可能。ダウンロードされるべきでないファイルがダウンロードされるのを防ぐことができます。SSIを「.html」で動かすことが可能5.ブラウザ経由でのアクセスを一切拒否する2002年夏、データ流出事故を報じるニュースが相次ぎました。約3万件の個人情報がWEBで閲覧可能になっていた。2093件のユーザーデータが閲覧可能になっていた。Cloud(コアプレスクラウド)】10日間お試し無料.htaccess自体にアクセスできないようにするには?せっかく.htaccessや.htpasswd(後者のファイル名は任意なので、.htpasswdというファイル名かどうかは分かりませんが)によって、コンテンツを守ったとしても、.htaccessや.htpasswd自体にhttp://〜経由でアクセスできてしまっては、元もこうもありません。.htpasswdに書かれているパスワードはDES暗号化されているとは言え、パスワードファイルが漏れることによりクラッキングされる可能性はそれだけ増えます。攻撃者は自分のサーバで(誰にも怪しまれることなく)時間をかけて総当たりでパスワードを試すことが可能になります。.htpasswdはDocumentRootより上に設置するのは当然として、問題は.htaccessです。これは、DocumentRootの下に置かなければ意味がありません。Forbiddenというステータスを返すように)しているならばOKですが、そうでない場合は、自分で設定する必要があります。all</Files>として、「.ht」で始まるファイルは全てアクセス禁止とできます。これなら、.htpasswdもDocumentRootの下に置いても一応大丈夫なはずですが、それでもDocumentRootより上に設置した方が安全だと思います。●ブルドックソースのデータ流出事故(2002年8月)http://bizns.nikkeibp.co.jp/cgi-bin/search/wcs-bun.cgi?ID=202687&FORM=biztechnews※URLは事件を報じる日経BP社のBizTechのもの。約5万件のデータが閲覧可能になっていた。Interactiveのもの。3,244件のデータが閲覧可能になっていた。これらの流出事故では、いずれも、特定のアドレスをブラウザのアドレス欄に直接入力すると閲覧可能な状態になっていました。パスワードなどで保護されていませんでした。そのことをもって、そのようなデータ閲覧が可能なURLを不特定多数の人に掲示板で告知する行為は決して許されるものではありませんが、サイト管理者の責任は問われてしかるべきだと考えます。.htaccessを利用すれば、このような"不正アクセス"は簡単に予防できるのですから。all</Files>などとするだけで、「xxx.dat」(xxxは任意のファイル名)や「yyy.csv」(yyyは任意のファイル名)へのブラウザ(正確には、ブラウザでなくても良いので、ユーザーエージェント)経由でのアクセスは、できなくなります。これだと、プログラム(例えばCGIファイル)経由でデータファイルを読み込めないのではと考えられるかもしれませんが、そんなことはありません。CGI経由であれば、読み込みは可能です。上の正規表現のところを念のため説明しておきますと、上の例では、「.」は正規表現の中では「任意の文字」を表すメタ文字ですが、こここでは、拡張子の「.」(ドット)であり、特別な意味はありませんので、エスケープ文字である「\」をつけて、後ろに続く「.」はメタ文字のそれではないよということを表しています。続いて、拡張子は、「.dat」もしくは「.log」もしくは「.csv」であることを示すために、「|」を使っています。「|」は「or(もしくは)」という意味のメタ文字です。最後にある「$」は「文字列の末尾」を表します。これを付ける事により、例えば、「abc.data」や「xyz.log.txt」はアクセス制限の対象外にすることができます。可能性としては、データファイルによく使われるファイル名を推測されるケース。data.txt、customer.csv、order.txtなど。Web上で公開されているフリーのCGIなどを利用している場合、データファイル名や格納場所(CGIから見た場合の位置関係というかパス)などはデフォルトのまま利用されていることが圧倒的で、推測が非常に容易です。した対策がなされていない場合、ダウンロードされてしまいます。検索エンジンに掲載されてしまった場合。どこからもリンクされていないファイルが検索エンジンに掲載されるかの謎については後述します。いわゆるハッキング(クラッキング)退社した元社員などからの情報流出などがあると思います。ここで、注目したいのが、「2」のケースです。どこからもリンクされていないのに、検索エンジンに掲載される場合があるのでしょうか。Apacheの機能で、URLの末尾にファイル名が指定されず、「/(スラッシュ)」止めでアクセスされた場合に、index.htmlやindex.cgiなどを表示する機能がありますが、これらのファイルもない場合、Apacheはそのディレクトリーの中にあるファイルの一覧を右上の画像のように表示することがあります。それぞれのファイルにはリンクが貼られていますので、例えば、この中にdata.csvがあれば、データファイルの存在箇所が公開されていることになります。検索エンジン・ロボットの中には巡回時に、効率的にファイルをインデックスしていくことを目的にするのか、この「スラッシュ」止めでアクセスし、ファイルの一覧を取得できるか試みるものがあります。すると、検索エンジンに掲載したくないファイルまで検索エンジンに掲載される可能性があることになります。-Indexesと一行書くだけで良いのです。しておけば、index.htmlなどがない場合にスラッシュ止めでアクセスされた場合、左の画像のようなエラーメッセージ(あなたは、このURLにアクセスする権限がありません。いうようなメッセージ。-Indexes」の「-」は「マイナス」を意味します。Apacheのoptionsから「Indexes機能」はマイナスにする、すなわち使わないという意味になります。Indexes」とします。「+(プラス)」が無ければ、その機能をonにすることになります。インターネットでお小遣い。TOEICリスニング倶楽部このような.htaccess機能により、希望しないファイルが検索エンジンに収集される危険性を回避できます(もちろん、単純に中身が空でも良いので、index.htmlを設置するだけでも、対処作にはなります)。そもそもの問題として、重要なデータをhttp://〜でアクセスできるようなところに置いているのが問題とも言えます。DocumentRoot以下(多くの場合、/home/××/public_html/以下?)に置いているのが、そもそも問題であって、重要なファイルがDocumentRootより上にあれば、ブラウザ経由などで(http://〜で)アクセスしようがないわけです。慣れないうちは、CGIファイルのすぐ近くにデータファイルなども設置しがちです。公開されている多くのフリーのCGIでもそのようになっていますが、これは、あらゆる環境にいるユーザーを対象とする場合、DocumentRootより上にデータファイルを置くというような書き方は、CGI初心者(もしくはCGIを全く知らない人)を対象として配布する限り、とてもできないことだと思います。DocumentRootの下に置くことは、このような危険を伴うことをウェブ管理者たるものは知る必要があると思います。その上で、避けられない場合は、.htaccessでしっかりとアクセス制限を行うべきです。ディレクティブhttp://httpd.apache.org/docs/mod/core.html#options次のページでは、あるURLにアクセスした際に別のURLに自動転送する機能について見てみます。