Joomla:限制对图像和视频的热链接访问

时间:2014-03-04 11:19:14

标签: php joomla

我希望我很快得到帮助:)。

问题只是这样: 我构建了一个自定义组件(php软件),很快将在Joomla Extension目录中列出供用户下载。在此组件中,图像和视频通过网址链接(热链接)。

现在,在我的网站上,用户可以支付订阅费用。

我希望实现的目的只是允许我构建的组件被授予访问我网站上有效订阅的用户的图像和视频的权限,并限制组件对订阅已过期的用户访问图像和视频

我只是想知道如何解决这个问题。 非常期待您的回复,谢谢。

1 个答案:

答案 0 :(得分:0)

所以我知道您可以自由下载该组件,但它不会将热链接媒体显示给过期的帖子或未注册的用户。

我猜你必须将你的注册用户主机保存在一个表中,而不是热链接到图像直接通过一个php脚本来提供它,该脚本会在显示图像之前检查订阅状态(基于请求主机URL)或一个“未描述的”后备图像。

另一种方法是重新绑定网络服务器中的内容,无论是在.htaccess还是在nginx的vhost定义中。但这意味着要经常手动添加或删除嫌疑人。

非常宽松的例子:您的怀疑者请求图片

<img src="http://yoursite.com/image.php?img=akdbnrieodoidnsd"/>

来自他的网站http://suscribersite.com

您的图片脚本如下

$imghash=$_GET['img'];
//strip non alphanumeric characters, to avoid malicious requests
$cleanhash =preg_replace('/[^a-z_\-0-9]/i','', $imghash);

header('content-type: image/png');
if(valid_suscriber($_SERVER['HTTP_REFERER'])) {
    $img = file_get_contents("/non-public-directory/$cleanhash.png");
} else {
    $img = file_get_contents("/non-public-directory/unauthorized.png");
}

echo $img;

您必须实施 valid_suscriber 功能,以针对您的suscriber表检查http_referer suscribersite.com 。但是,请注意, http_referer可以很容易被欺骗

您的案例的真正解决方案是在任何请求之前执行oauth握手,并将oauth令牌附加到每个后续请求。这更麻烦,但不容易被篡改。