通过.htaccess和PHP防止图像分辨率的热链接



完全阻止热链接是很容易的,但是它可以基于图像分辨率来完成吗?我不介意人们热链接较小的图像,但我有一些+30 MiB的图像会使我的带宽使用激增,所以我想特别防止大图像的热链接。我想这与PHP如果可能的话,因为我所有的图像已经通过PHP脚本显示。

热链接检测通常基于检查引用者(sic!)。

你可以很容易地在你的交付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代码反热链接,也有一些其他的例子使用cookie(即,一个PHP会话检查用户是否被授权查看图片)。

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

最新更新