2009-03-15 12 views
5

ホストされているASP.NET Webサイトからの画像へのホットリンクを防ぐ最も簡単な方法は何ですか?私はホットリンクからすべてのイメージ/リソースを防ぐ必要はありません、私はちょうどサイト上の特定の画像/リソースへのホットリンクを防止したいです。 FYI。 GoDaddy.comでホストされているので、IISのトリックはおそらく動作しません。あなたのASP.NETサイトからイメージのホットリンクを防ぐ方法は?

+0

ここで見てください。 http://mvolo.com/blogs/serverside/archive/2006/11/10/Stopping-hot_2D00_linking-with-IIS-and-ASP.NET.aspx –

答えて

3

イメージをASPXページでストリーミングするのは良い解決策です。リフェラーはハッキングされる可能性がありますが。

本当にセキュリティに関心がある場合は、独自のsalt(キーワード)を使用してMD5(SHA-1またはSHA-2)に対して生成することができます。これと同様に現在のエポック時間も同様に実行すると、画像にも有効期限が設定されます。この "キーコード"をクッキーに保存してください。画像が提供されるたびに、基本的にこれをクエリー文字列で渡します。検証はもう一方の側のASPXで行われます。 HTTPRequestModuleまたはGlobal.asaxページを使用して、各リクエスト間に新しい「キーコード」を再生成することさえできます。

オーバーヘッドが発生しますが、ホットリンクができなくなります。

+0

+1 +答え。そこにはたくさんのことがあります。私はおそらく、期限切れのハッシュとカスタム拡張ハンドラ(404のメカニズムを通して)のために行く –

3

あなたのサイトを持たない画像に対するリクエストは、HTTP refererヘッダーフィールドで拒否できます。それが理論です。アプリケーションでリクエストを制御するには、(直接リンクするのではなく)ASPページからすべてのイメージをストリーミングする必要があります。

2

私が思ったことの1つは、イメージの下部に余分な部分を追加してから、サイトに表示されたときにCSSスプライトのテクニックを使用してカットすることです。素朴なホットリンクはあなたの余分な部分を表示します。これは、画像が歪んでいることを意味するので、他のサイトでは正しく表示されず、余分な部分を使用して独自のURLなどを表示することができます。

8

これを行う最も簡単な方法は、IIS 7.0でUrlRewriteを使用することです。

https://help.maximumasp.com/KB/a738/using-url-rewrite-to-prevent-image-hotlinking.aspx

<configuration> 
<system.webServer> 
    <rewrite> 
     <rules> 
      <rule name="PreventImageHotlinking" enabled="true" stopProcessing="true"> 


<match url=".*\.(gif|jpg|png)$" /> 
    <conditions> 
         <add input="{HTTP_REFERER}" negate="true" pattern="^$" /> 
         <add input="{HTTP_REFERER}" negate="true" pattern="http://www.YourDomain.com/.*" /> 
    </conditions> 
    <action type="Rewrite" url="/images/hotlinking.jpg" /> 
</rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
+0

それを愛する!私はimages/js/cssファイルと私は他の人がホットリンクしたくない何かのためにそれを使用する! – RoLYroLLs

関連する問題