使用 web.config 停止目录中的热链接

问题描述 投票:0回答:2

我的网站上有一个文件夹用于缓存大型 Flash 电影,我想阻止其他人将它们嵌入到他们的网站中;我想尝试仅使用

web.config
文件来执行此操作。这怎么办?

我第一次尝试规则(不起作用):

以下规则应该防止公共访问(和嵌入)缓存文件夹“CurrentCache”中的 .swf 文件 - http://myurl.com/ContentCache/ 并提供替换影片“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" />
行中得到了错误的正则表达式,有什么想法吗?

asp.net .net web-config url-rewrite-module
2个回答
3
投票

您可以为此构建一个

HttpModule
。有一篇博客文章准确描述了我认为您想要做的事情:

HttpModule 用于阻止 ASP.NET 中的外部引荐来源网址

编辑:当然,我只是在这里改变关于

web.config
的规则。您必须使用外部模块,但是您可以仅从
web.config
引用它,而无需修改任何代码。

编辑2:如果你想使用重写规则来做到这一点,你必须改变你的模式,如下所示:

<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>  

使用的模式是正则表达式,您可以在此处阅读它们,并且可以在此网页上测试它们。


0
投票

您能分享一下您的工作代码吗?

© www.soinside.com 2019 - 2024. All rights reserved.