热链接保护,正确.htaccess规则?

时间:2012-12-01 15:32:56

标签: apache .htaccess mod-rewrite hotlinking

我在many blogs上看到了许多答案,因此人们通过使用此代码进行Hotlink保护:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

也是this tool建议的。

我可能错了,但欺骗这段代码并不是一件容易的事吗?刮刀是否只需要使用这些简单的子域来绕过热链接保护?

http://mydomain.com.scarper1domain.com
http://mydomain.com.scraper2domain.net

编辑:仅供我使用我认为更加防弹的代码,但我很高兴看到您对此的评论/批评。

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain\.com$ [NC]
RewriteRule .*\.(jpg|jpeg|png|gif)$ - [F,NC,L]

1 个答案:

答案 0 :(得分:2)

由于大多数apache设置已经将example.com之类的请求重定向到example.com/,因此编辑中不需要第三个条件。所以代码将成为

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain\.com/.*$ [NC]
RewriteRule .*\.(jpg|jpeg|png|gif)$ - [F,NC,L]

Scrapers甚至不需要使用子域,因为他们可以伪造正在发送的http头。没办法阻止这个。

其余代码没问题。如果我需要,我会用它。