2

私のサイトには、大きな Flash ムービーをキャッシュするためのフォルダーがあり、他のユーザーがそれらを自分のサイトに埋め込むのを阻止したいと考えています。web.configファイルのみを使用してこれを試してみたいと思います。これはどのように行うことができますか?

ルールでの私の最初の試み(機能しません):

次のルールは、キャッシュ フォルダー 'CurrentCache' - http://myurl.com/ContentCache/内の .swf ファイルへのパブリック アクセス (および埋め込み) を防止し、代わりに代わりのムービー 'NoEmbedFromCacheSWF.swf' を提供することになっていました。

<rule name="Prevent SWF hotlinking" enabled="true">
      <match url="^(ContentCache)(.swf)$" ignoreCase="true" />
      <conditions>
        <add input="{HTTP_REFERER}" pattern="^http://(.*\.)?myurl\.com/.*$" negate="true" />
      </conditions>
      <action type="Rewrite" url="/Content/Flash/NoEmbedFromCacheSWF.swf" />
    </rule>

前もって感謝します!

注:行の正規表現が間違っていると思いますが、<match url="A swf inside /ContentCache/" ignoreCase="true" />どうすればよいですか?

4

1 に答える 1

3

このために を作成できますHttpModule。あなたがやりたいことを正確に説明しているブログ投稿があります。

ASP.NET で外部リファラーをブロックする HttpModule

編集:もちろん、私はここでルールを曲げていますweb.config。外部モジュールを使用する必要がweb.configありますが、コードを変更せずに参照するだけで使用できます。

Edit2:書き換えルールを使用して実行する場合は、次のようにパターンを変更する必要があります。

<rule name="Prevent SWF hotlinking" enabled="true">   
  <match url="/ContentCache/.*\.swf$" ignoreCase="true" />   
  <conditions>   
    <add input="{HTTP_REFERER}" pattern="^http://(.*\.)?myurl\.com/.*$" negate="true" />   
  </conditions>   
  <action type="Rewrite" url="/Content/Flash/NoEmbedFromCacheSWF.swf" />   
</rule>  

使用されるパターンは正規表現です。ここでそれらを読むことができ、たとえばこの Web ページでテストできます。

于 2012-04-05T15:47:51.220 に答える