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