保护图像内容不受未经授权人员的侵犯


Protect image contents from unauthorised people

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

  1. 添加和删除图层:上传后,添加图层以使图像的内容不可见。因此,如果有人到达你存储的文件夹,图像将毫无意义,因为他看到的是图层而不是图像内容。然后移除图层并向他们显示谁拥有适当的权限。

  2. 将图像转换为其他格式:将该图像转换为任何格式,如.txt、.exe、.bin、.avi或任何其他格式,这样在不进行编辑的情况下,图像将不可见。转换回以将其显示给授权用户。

  3. 图像网格:将图像划分为一些网格,例如,如果图像为中等100网格,则更改网格的位置以使内容不清楚。为此,我们可以将每个网格命名为1、2、3等,然后将位置更改为$position - 20。因此,位置25的网格将变为5,100将变为80,1将变为81,依此类推。以相同的方式反向显示给授权用户。

完全保护是不可能的,但我们可以让它变得更难。我不知道Imagick三者中哪一个是可能的,哪一个不是。如果你知道,请告诉我。提前谢谢。

您可以将这些图像放在public_html之外的另一个文件夹中(这样就没有人可以访问它们)。然后通过脚本,如果用户登录,您将获得图像文件内容,然后更改标题。如果用户未登录,则可以显示随机图像或显示默认图像。

例如,公共html文件夹是:/var/www your image folder can be: /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);