在浏览器php中保护图像

时间:2015-01-07 17:21:39

标签: javascript php html encryption

我的页面中有图像,我希望通过直接查看其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"

有什么方法可以解决这个问题吗? 感谢。

enter image description here

2 个答案:

答案 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响应。