ホストされている ASP.NET Web サイトから画像へのホットリンクを防止するための最良/最も簡単な方法は何ですか? すべての画像/リソースのホットリンクを防止する必要はありません。サイト上の特定の画像/リソースへのホットリンクを防止したいだけです。ご参考までに。GoDaddy.com でホストされているため、IIS のトリックはおそらく機能しません。
4 に答える
これを行う最も簡単な方法は、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>
ASPXページを介して画像をストリーミングすることは良い解決策です。リファラーはハッキングされる可能性がありますが。
あなたができることは、あなたが本当にセキュリティに関心があるなら、ユニークなソルト(キーワード)を使用して、MD5(SHA-1またはSHA-2)に対して生成することです。これに対しても現在のエポックタイムを実行します。これにより、画像にも有効期限が設定されます。この「キーコード」をCookieに保存します。画像が提供されるときはいつでも、基本的にクエリ文字列を介してこれを渡します。検証は、もう一方の端のASPXで行われます。HTTPRequestModuleまたはGlobal.asaxページのいずれかを使用して、各リクエスト間に新しい「キーコード」を再生成することもできます。
オーバーヘッドが発生しますが、誰もがホットリンクできなくなります。
HTTP リファラー ヘッダー フィールドにサイトが含まれていない画像のリクエストを拒否することができます。それが理論です。アプリケーションで要求を制御するには、(画像に直接リンクするのではなく) ASP ページを介してすべての画像をストリーミングする必要があります。
私が賢いと思ったのは、画像の下部に余分な部分を追加し、cssスプライトテクニックを使用してサイトに表示されたときにそれを切り取ることです。ナイーブなホットリンクを使用すると、余分な部分が表示されます。これは、画像が歪んでいることを意味するため、他のサイトでは正しく表示されません。余分な部分を使用して、独自のURLやその他の必要なものを表示できます。