4

有时,当浏览器查看 www.somesite.com/some_image.jpg 时,我会看到未提供图像——它会说您需要从页面中查看图像。

(比如用google的图片搜索,看一些结果的时候)

所以我认为他们的服务器正在使用类似的东西

# pseudo code
if ($referer not contain "mywebsite.com") then not serve the image / swf

但这可能不是一个好方法,因为 HTTP_REFERER 不可靠?所以当引用信息丢失时,一些用户最终会看不到图像或 swf?

4

7 回答 7

4

它可能是可靠的,但有些防火墙将其剥离,所以你应该这样做

// psuedo code
if ($referer does not contain "example.com" and $referer is set and $referer is not equal to "") then do not serve image
于 2009-05-27T22:56:34.640 回答
4

如果您有权使用 .htaccess 文件,甚至更好,您可以执行以下操作:

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.com/.*$ [NC]
RewriteRule \.(gif|jpg|js|css|cur|png|jpeg)$ - [F]

或者,如果您希望他们看到不同的图像,请执行以下操作:

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ http://www.example.com/angryman.gif [R,L]
于 2009-05-27T23:01:17.860 回答
2

就像另一种情况一样,我认为随便允许热链接引用者会更有趣,直到你得到一些每天推送数千个请求的小丑(没有任何真正的链接)。我所做的就是将图像重定向到完全不同的东西

想想山羊。只会更恶心。

于 2009-05-27T23:04:13.987 回答
1

它并不完美,但如果它能够阻止 80% 的不知道如何破解referer 的观众抓取你的图像,那它可能总比没有好。您还应该将图像文件夹包含在随机命名的文件夹下,并定期重命名它们以防止直接链接。

于 2009-05-27T22:57:58.710 回答
0

我会将这个数字升级到 99.something%。几乎所有人都不会拥有干扰引荐来源网址字符串的代理。

但是,是的,使用wget(et al) 设置引荐来源网址是微不足道的。

于 2009-05-27T23:01:47.657 回答
0

引用头只是文本,因此可以在http请求中伪造。正如之前的评论中所述,您应该照顾绝大多数人。

于 2009-05-27T23:05:13.937 回答
0

类似于亨利沃森,我在想

# pseudo code
if($referer not empty and $referer not contain "mywebsite.com") then don't serve it. 

仔细检查 3 种情况:
referer 为空 ==> 服务的
referer 不为空且包含“mywebsite.com”==> 服务
的referer 不为空且不包含“mywebsite.com”==> 未服务

那么进行硬链接的人很可能会发现以这种方式链接并立即更改它是行不通的。

于 2009-05-27T23:47:15.693 回答