我的页面中有图像,我希望通过直接查看其URL来保护图像。 基本上,我想隐藏/加密图像源。
<img src="www.mywebsite.com/media/1.jpg" alt="customer_id" />
我已禁用通过某种javascript右键单击图像。但是,仍然可以从页面的源代码中获取图像源。
我也试过在图片中添加这些属性。
ondrag="return false"
ondragstart="return false"
oncontextmenu="return false"
galleryimg="no"
onmousedown="return false"
有什么方法可以解决这个问题吗? 感谢。
答案 0 :(得分:3)
用HTML有效地隐藏它是不可能的 - 但我认为你害怕有人会看到不是他的图像。 我的解决方案:将图像移动到无法从网络访问的目录,例如,如果现在它们在
/home/mywebsite.com/public_html/media/
将它们移动到:
/home/mywebsite.com/media/
并通过PHP提供服务:
if($userIsLogged && $imageBelongsToUser) { //this is of cource pseudo code - only showing the idea
header("Content-type: image/jpeg");
$image=imagecreatefromjpeg('/home/mywebsite.com/media/1.jpg');
imagejpeg($image);
}else{
echo "error";
}
当然你必须以某种方式存储关于配对用户/图像的信息。
答案 1 :(得分:0)
没有办法做到这一点。请考虑您的用户只需打开浏览器的工具面板,然后查看通过网络发送的URL。
如果您真的想保护源图像,请将它们全部通过单个URL端点(例如http:/mysite.com/img-gateway)进行路由,并让(可能加密的)POST数据确定将返回的图像。当然,用户可以随时保存您的图像并重新存入另一个URL,但至少会停止热链接。或者,使用某种服务器扩展,如果没有特定的cookie,将使用403 Forbidden响应。