检查 Windows 服务器上的 HTTP_REFERER

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

我目前正在从 Linux (Apache) 服务器迁移到 Windows (IIS)。在 Linux 上,我使用 .htaccess 文件来检查 HTTP_REFERER 值,以确保我们的文件仅从我们的站点加载,而不是从其他站点链接到:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?foo.com [NC]
RewriteRule \.(dcr)$ - [NC,F,L]

如何在 Windows 计算机上完成此操作? (Windows Server 2008 R2、IIS 7)

.htaccess iis http-referer
2个回答
1
投票

查看以下位置的第 6 点:

http://blogs.iis.net/ruslany/archive/2009/04/08/10-url-rewriting-tips-and-tricks.aspx

简而言之,您需要安装 IIS URL Rewrite 插件并创建一个类似于以下内容的规则:

<rule name="Prevent image hotlinking">
  <match url=".*\.(gif|jpg|png)$"/>
  <conditions>
    <add input="{HTTP_REFERER}" pattern="^$" negate="true" />
    <add input="{HTTP_REFERER}" pattern="^http://foo\.com/.*$" negate="true" />
  </conditions>
  <action type="Rewrite" url="/images/say_no_to_hotlinking.jpg" />
</rule>

当然,您的规则可能看起来略有不同。 通过 URL 重写,您还可以获取当前的 .htaccess 规则并将其直接导入为新规则。 它将为您处理翻译,但根据您的目标,您可能需要对生成的结果规则进行一些细微的更改。

希望有帮助。


0
投票

通过使用重写规则,将此代码添加到 web.config 中:

<rule name="Prevent unauthorised use">
  <match url=".*\.(gif|jpg|png)$"/>
  <conditions>
    <add input="{HTTP_REFERER}" pattern="^http://foo\.com/.*$" negate="true" />
  </conditions>
</rule>

无需再做任何事情,因为这只会为任何尝试热链接或直接下载的人显示 404。

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