2011-01-11 12 views
3

product.exeのような静的ファイルのダウンロードがあります。特定のユーザーのみがダウンロードできるように、.htaccessファイルを使用してこれらのファイルへのアクセスを に制限します。.htaccessを使用してファイルダウンロードへのアクセスを制限する

これはmod_rewriteで処理することができますが、このスニペットはオンラインで のリファラーを使用して不正なサイトをブロックすることが判明しました。

RewriteEngine on 
# Options +FollowSymlinks 
RewriteCond %{HTTP_REFERER} http://example.com/downloads/confirm/3811 [NC,OR] 
RewriteRule .* - [F] 

出典:http://www.javascriptkit.com/howto/htaccess14.shtml

代わりのリファラに基づいてブロッキングは、私はリファラに基づいて許可します。そうすれば、参照元は最初にログインしなければアクセスできないURLになる可能性があります。私はこのルートに行き、HTTPリファラーを使ってファイルにアクセス許可を与えることを考えています。私はそれがそれを行うための最良の方法ではないかもしれないと知っています、そして、私は推薦者がなりすますことができると思いますが、それは安全である必要はありません。私は、あなたがアクセスを制限するために持っているかもしれない他のアイデアにも開いています。

+0

PHPやPerlなどのスクリプト言語を使用してユーザーの検証を処理し、ファイルをブラウザに送るのはどうでしょうか?(Ctrl + Shift + I>ネットワーク) – cdhowie

+0

@cdhowie - これは現在私たちがやっていることですが、readfileを実行するためにphpを使用しているため、ダウンロードは遅い接続では失敗します。代わりに直接ダウンロードしたいと思っています。 – jimiyash

答えて

3

あなたはリファラーに基づいて許可したい場合:

RewriteCond %{HTTP_REFERER} !^http://goodsite-1.com/ [NC] 
RewriteCond %{HTTP_REFERER} !^http://goodsite-2.com/from/there.php [NC] 
RewriteCond %{HTTP_REFERER} !^$ # There are some users/browsers not sending referrer.. 
RewriteRule .* - [F] 

それともあなたは、例えばとする前に設定することができますクッキーに基づいて許可することができますPHP:ダウンロードしたファイルにあなたのHTMLの 'ポスト要求' の

RewriteCond %{REQUEST_METHOD} !=POST 
RewriteRule .* - [F] 

とあなたのリンク:

RewriteCond %{HTTP_COOKIE} !^.*cookie-name.*$ [NC] 
RewriteRule .* - [F] 

あるいはまた、POSTリクエストのみを許可

<form method="post" action="path/to/download.mp3"> 
    <input type="submit" value="Click here to download!" /> 
</form> 

実際には、これらの方法を組み合わせることができます。

+0

ありがとう、これは私が探していたものです。 – jimiyash

+0

実際には、httpリファラーを使ってみましたが、IEはhttpリファラーを与えていません。私はIEのドキュメントを読んで、それは非SSLページ上のリファラーを与えないと言いましたが、それらのドキュメントはまだ機能しないので古いかもしれません。だから代わりに、あなたが提案したように私はPHPでクッキーを設定しました。 – jimiyash

0

セキュリティ上の問題のため、http_referrerは信頼できるヘッダーではありません。

  • 一部のブラウザ設定を使用すると、HTTPリクエストヘッダを操作できるツールがありますが、空のhttp_referrerヘッダー
  • を引き起こします。
関連する問題