我有一个网站与多个嵌入图像…
在服务器端,我存储了同一图像的多个版本(用于大小调整等)
。Image.jpg、image-thumb.jpg、image-original.jpg
然而,我也保留了一份原始的,未经编辑的图像,其中包含敏感信息,我希望远离公众访问的副本。目前,如果有人从">image.jpg编辑我的源代码";">image-original.jpg";他们可以看到原件,这是一个安全风险。
我保留了这些原始图像,以便可以在我的自定义后端CMS门户中使用它们来根据需要编辑图像。
是否有办法阻止能拿到原件吗?也许通过阻止加载原始图像文件夹,除非请求来自我的网站上的某些位置?
好了,我明白了。
我为存储我的图像的子目录添加了一个deny all
.htaccess文件
然后我通过php脚本提供所有图像,如下所示:
// open file in binary mode
$filename = 'img/'.$GET['img'];
$imagefile = fopen($name, 'rb');
// send the right headers
header("Content-Type: image/jpg");
header("Content-Length: " . filesize($filename));
// dump the picture and stop the script
fpassthru($imagefile );
然后很容易实现我想要的任何逻辑,以防止某些文件被打开。在这个例子中,我只做了:
if(strpos($_GET['name'], 'original')!=false){
die();
}
我们还可以包括任何需要的逻辑,以确保管理员用户登录,等等…