如何防止我的网站上的资源热链接(“图像盗窃”/“带宽盗窃”)?

我试图写“终极”反热链接.htaccess

你可以在网上find许多例子/教程 / 生成器 ,但其中许多是错误的或不完整的(甚至是两者)。

这些是我正在寻找的function:

  • 当HTTP_REFERER是外部站点时,必须阻止热链接的文件扩展名列表。
  • 必须允许当前域(duh)的热链接,而不用在.htaccess中对其进行编码。
    • 对于当前的域名,它必须在http和https下工作。
    • 对于当前的域名,它必须与www和没有www。
  • 必须能够添加例外域到这些规则(如我们的朋友谷歌),这些域名必须工作在HTTP和HTTPS和WWW或无www。

这是我迄今取得的成就:

<IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com/.*$ [NC] RewriteRule \.(gif|jpe?g|png|zipx?)$ - [NC,F] </IfModule> 

我的问题:

  1. 如何避免在.htaccess中硬编码mydomain.com ? (如果能够将这个.htaccess部署到我的所有域,而不必为每个域都修改它,那将是非常棒的。)
  2. 在我的RewriteRule中, gif|jpe?g|png|zipx? 相当于gif|jpg|jpeg|png|zip|zipx对不对? (对不起,在正则expression式中仍是新的。)
  3. 你不知道我的.htaccess中有什么不好的东西吗?

对于#1我知道这是有点可能的。 我find的最接近的是这个代码片段,它从url中删除www,而不用硬编码域。 有没有办法使用这种方法来我的问题#1?

 RewriteCond %{HTTP_HOST} ^www\.(.+) RewriteCond %{HTTPS}s/%1 ^(on(s)|offs)/(.+) RewriteRule ^ http%2://%3%{REQUEST_URI} [L,R=301] 

更新:

我知道的解决scheme将提供水印图像,而不是常规的。 但是我不想find这样的解决scheme。 我想要一个适用于各种二进制文件(zip,exe,iso,jpg,png,gif …)的通用解决scheme(服务403错误)。

不pipe你做什么,你都会“浪费”CPU周期(为了确定引用者站点(链接链接的站点)是否被授权,你必须对请求数据进行一些处理。
你唯一能做的就是节省带宽,同时浪费最less的CPU周期。

在Apache Docs中有一些例子完全符合你的要求。 这个:

 SetEnvIf Referer example\.com localreferer <FilesMatch \.(jpg|png|gif)$> Order deny,allow Deny from all Allow from env=localreferer </FilesMatch> 

似乎是最适用的(并不需要mod_rewrite的全部权重)。
您可以添加额外的有效引荐来源额外的SetEnvIfAllow指令。

如果编写一个规则,如果引用是未知的(禁止的),只需调用一个传递图像的PHP文件作为参数,在PHP文件中,只需input一个大红色:“这个文件来自MYWEBSITE.COM并没有官方授权在这里显示“。

至于你的问题,让你的规则全球化。 纠正我,如果我错了,但如果规则是任何虚拟主机之前宣布它将适用于所有的虚拟主机(种“默认规则”)。

另一个想法很简单:只要redirect到一个PHP文件(这里是filter.php ),它将在授权的网站上查找,并返回所需的文件,如果一切正常的话:

 RewriteRule /(.*)\.jpg$ /filter.php?im=$2\.jpg [QSA,L] 

filter.php只是dynamic加载一个虚拟主机列表或类似的东西:

 if (isset($_SERVER['HTTP_HOST'])) { if ((mb_ereg('thereferers\.I\.HATE\.com',HOST) !== false) ) { ... your code ... } } 

Cloudflare可能对你有一些帮助: http : //www.cloudflare.com

然而,这只适用于图像,但似乎是你以后。

热链接保护

自动启用图像的热链接保护,以防止非现场链接。 不在区域内且不为空白的查阅者将被拒绝访问。 支持的文件扩展名是gif,ico,jpg,jpeg和png。

受保护: http : //mydomain.com/images/pic.jpg绕过: http : //mydomain.com/images/hotlink-ok/pic.jpg

问题1:

RewriteEngine On
RewriteCond%{HTTP_REFERER}!^ http://(。+)?yoursite.com/ [NC]
RewriteCond%{HTTP_REFERER}!^ $
RewriteRule。*。(jpe?g | gif | bmp | png)$ – [F]

问题2:

问题3

我会用我的一个

或者使用CoralCDN让民间热点链接到他们心中的内容?