php – 保护未经授权人员的图像内容

众所周知,对于许多Web开发人员来说,这是一个非常重要的问题.他们希望保护对其机密图像的直接访问或直接可读性.包含所有图像的文件夹是打开的,任何人都可以访问该文件夹,但我想做一些可以保护我的图像内容的东西,意思是,如果未经授权的人寻找图像,他可以通过访问相应的文件夹来获取图像但是内容将是隐形或难以理解的.我想如果我在这里找到解决方案,很多人都会从这个问题中得到帮助.写.htaccess并不总是一个稳定的选择.所以,在集思广益之后,我找到了一些方法来保护图像内容不被直接访问.我想使用Imagick with
PHP来执行任何类型的图像编辑.

>添加和删除图层:上传后,添加图层以使图像内容不可见.因此,如果有人到达您存储的文件夹,图像将毫无意义,因为他将看到图层不是图像内容.然后删除该图层并向具有适当权限的人显示.
>将图像转换为其他格式:将图像转换为.txt,.exe,.bin,.avi或任何其他格式的任何格式,以便在不进行编辑的情况下,图像将不可见.转换回来向授权用户显示.
>图像网格:将图像划分为多个网格,例如,如果图像为中等100格,则更改网格的位置以使内容不清晰.为此,我们可以将每个网格命名为1,2,3等,然后将位置更改为$position – 20.因此,位置25的网格将转到5,100将转到80,1将转到81等等.以相同的方式反向显示给授权用户.

永远不可能完全保护,但我们可以使它更难.我不知道Imagick有哪三个是可能的,哪个不是.如果你知道,请告诉我.提前致谢.

最佳答案 您可以将这些图像放在public_html之外的其他文件夹中(这样任何人都无法访问它们).然后通过脚本,如果用户已登录,则获取图像文件内容,然后更改标题.如果未记录用户,则可以显示随机图像或显示默认图像.

例如,public html文件夹是:/ var / www你的图像文件夹可以是:/ registered_user / images /

然后在PHP脚本中,您可以编写:

<?php
if(!userLogged() || !isset($_GET['image'])) {
  header('Location: /');
  die();
}
$path = '/registered_user/images/';
$file = clean($_GET['image']); // you can create a clean function that only get valid character for files

$filename = $path . $file;
if(!file_exists($filename)) {
  $filename = '/var/www/images/bogus.jpg';
}
$imageInfo = getimagesize($filename);

header ('Content-length: ' . filesize($filename));
header ('Content-type: ' . $imageInfo['mime']);
readfile ($filename);
点赞