2012-02-28 12 views
-1

私はそうハッシュを使用してファイルへのホットリンクを防止しますか?

http://mysite.com/files/file.exe?auth=qwe1245efmkrkn% $ E12 <ように私のPHPのサイトで自分のファイルを持って探しています! - いくつか生成されたハッシュ...私は任意のコードを書いていない

が、私は思っていたどのようにIファイルへの直接リンクのためのauth変数を実装します。任意のアイデア?ありがとう!

答えて

2

あなたは.htaccess

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC] 
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L] 

コピーして、より良い、この操作を行うと、このコードを貼り付け、.htaccessでその名前を変更し、ルートに保存することができます。

Gumboは、あなたのウェブサイトにCSRF保護を適用しない限り、いくつかのブラウザはリクエストヘッダーを送信せずリクエストを偽造するのは非常に簡単だと述べています。 したがって、この

RewriteCond %{HTTP_REFERER} !^$ 
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain\.com/ [NC] 
#Redirect to an image 
RewriteCond %{REQUEST_URI} !hotlink\.(gif|png) [NC] 
RewriteRule .*\.(gif|jpg|png)$ http://yourdomain.com/images/hotlink.png [NC] 

Header set X-Frame-Options DENY 

を追加することを許可するように更新された.htaccessでも同じウェブサイトから、額装されてから、ウェブサイトを保証します。 CSRFに対して少し役立つかもしれません。

これに代わる方法として、画像リクエストをページにリダイレクトして処理することがあります。

+0

感謝:のみ、サーバー側のコードに以下のような

何かあるリンクであなたの秘密を置くことはありません!私はそこに欲しいものをする方法がないと言っていますか? –

+0

@ user987103、実際に私はタイトルに基づいて答えた、あなたの質問は意味をなさない。それを少し分かりやすくするために変更すればよいでしょう。 – Starx

+0

-1 2つの理由:最初に、一部のユーザエージェントはHTTPリファラを送信せず、2番目に、HTTPリファラを使用してリクエストを偽装するのは簡単です。 – Gumbo

2

あなたがリンクの一部として渡された有効期限を、使用してパスをハッシュする必要があるだろう、

HASH =

リンクは?ハッシュ= [結果のハッシュ] &のように見えるパス+シークレット+満了expiration = 192009345 < - 時間リンクは、unix epocからのミリ秒単位で有効期限が切れます。ファイルを提供する際

次に、あなたのハッシュが一致し、有効期限が経過していない場合は、インバウンドリンクから入手あなたの秘密+パス+ experationを使用してハッシュなり、ファイルを提供403

を投げていない場合は、資産を書き換えることができますhtaccessを使用してハッシュスクリプトを使用し、実際のアセットを非パブリックフォルダに保持してから、コンテンツタイプのヘッダーを使用してphpスクリプトを使用してファイルを提供し、ファイルの読み取り操作でバイナリをダンプします。

注:ご入力のための

RewriteEngine on

RewriteRule \(.*)(\.jpg|\.gif|\.png)$ hashChecker.php?file=$1$2 [QSA]

+0

ありがとう!それはまさに私が聞く必要があったものです。htaccessにスクリプトの使用方法を教えてください。 –

+0

動作可能なもので更新されました。セットアップ方法によって異なります。あなたは私のhtaccessファイルの先頭に置いたものを持っているので、今度はGoogleの –

+0

でmod_rewriteをチェックしてみてください。 htaccessファイルの.phpファイルでは、変数ファイルが$ _GET ['file']を使用して出力されているだけです - すべてが 'exe'であることがわかります。 –

関連する問題