Carpe Diem

  Top > スポンサー広告> Webサーバ > 特定のファイルへのアクセス禁止、ダウンロード禁止  

スポンサーサイト

-- - --/-- [--] - --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

特定のファイルへのアクセス禁止、ダウンロード禁止

2011 - 09/24 [Sat] - 02:06

自分の使用しているファイルをホームページ上では表示していいけど、直接ダウンロードされるのは・・・・・・と思っている人にとって有益な情報だと思います。
僕の場合Webビューワの元ファイルを直接ダウンロードできるようにすると、どんどんサーバに負担がかかるのでアクセスを禁止しようと。

ググって一番出てくるのは「リファラー」を用いた直リンク禁止の方法だと思います。
ただそれだと偽装されてしまえばアクセス可能になってしまうので、他の方法を探しました。

方法は主に2通りあって、どちらもapacheのディレクティブ設定で使えます。
よくググると.htaccessに書いて~というやり方が見つかりますが、.htaccessを使用する設定にすると、各フォルダで.htaccessファイルがあるか毎回走査されてサーバへの負担になります。なので極力htaccessファイルは使用しない方がいいとチュートリアルに書いてありました。

いつ .htaccess ファイルを使う(使わない)か。

というわけでディレクティブ設定、つまりは/etc/apache2/site-available/のdefault-sslの編集で設定します。

①MIMEタイプを指定して、ダウンロードできなくする。


ディレクティブ設定のところにAddTypeディレクティブを設定します。

AddType application/x-httpd-php .zip

と書くことで、「.zip」ファイルはPHPファイルとして解釈され、https://~.zipに直接アクセスされることでダウンロードされるのを防ぐことができます。実際に入力してみると白紙ページになりますし、ダウンローダを使用してもダウンロードできませんでした。こちらは<Directory>だけでなく、<Location>でも使用できました

②<Files>ディレクティブを使用する。


<Files ~ "\.(dat|log|csv)$">
deny from all
</Files>


と書くことで、この場合.dat、.log、.csvのファイルへの外部からのアクセスを禁止できます。
こちらはファイルにアクセス使用とすると「Forbbiden」表示になります。ダウンローダは「ファイルがありません」という反応でした。ただしこれは<Directory>でしか使えません

以下実際にディレクティブ設定の例です。僕の場合はFilesディレクティブを使用することにしました。一応コメントアウトでMIMEタイプの指定もしています。


        Alias /dav "/var/www/webdav"
        <Directory "/var/www/webdav">
                SSLRequireSSL
                Order deny,allow
                Allow from all
                #AddType application/x-httpd-php .zip
                <Files ~ "\.zip$">
                       deny from all
                </Files>

        </Directory>


以上です。

ソース:
ブラウザ経由でのアクセスを一切拒否する
ダウンロードされるべきでないファイルがダウンロードされるのを防ぐ
<Files> ディレクティブ
特定のファイルだけ守る

コメントの投稿





管理者にだけ表示を許可する

 | ホーム | 

プロフィール

Cicatrice

Author:Cicatrice
備忘録

検索フォーム

カテゴリ

最新記事

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。