使用.htaccess和PHP防止图像分辨率的热链接?

时间:2014-08-15 12:33:42

标签: php image .htaccess resolution hotlinking

完全防止热链接很容易,但是可以根据图像分辨率来完成吗?我不介意人们对较小的图像进行热链接,但我有一些+30 MiB可能会影响我的带宽使用,所以我想特别防止大图像的热链接。如果可能,我想用PHP,因为我的所有图像都已通过PHP脚本显示。

1 个答案:

答案 0 :(得分:0)

热链接检测通常基于检查引用者(原文如此!)。

您可以在交付php脚本中轻松添加文件大小检查:

if (filesize(FILENAME) > 30*1024*1024) {
    if ($_SERVER['HTTP_REFERER'] != '' && strpos($_SERVER['HTTP_REFERER'],'http://www.yourdomain.com/')===0) {
       header("Status: 500);
       echo "Hotlinking not allowed";
       exit(0);
    }
}

参见PHP code for anti hotlinking,还有其他一些使用Cookie的例子(例如,用于检查用户是否有权查看图片的php会话)。

然而,热链接保护总是有一些可能的限制:并非所有客户端都发送http引用(原文如此!),特别是在https上经常丢失,并且并非所有客户端都接受cookie。