如何保护用户';服务器上的s图像


How to secure user's images on a server?

我的web应用程序非常简单。有两个按钮:一个称为"保存",另一个名为"显示我的图像"。基本上,用户可以从Facebook API保存图像,并将其存储在名为"备份"的服务器文件夹中(在服务器上备份他们的图像,以便如果他们从FB中删除了FB或图像,他们将有备份)

  1. 当用户单击"保存"时,图像将存储在两个位置。图像URL将存储在SQL数据库中,但也将保存在名为"备份"的服务器文件夹中

  2. 当他们点击"显示图像"时,它将从数据库中检索图像的URL并显示图像。但是,当调用checkImage()时,它将检查图像URL是否有效。如果它无效,它将从服务器文件夹"备份"中检索相同的映像。

我不希望管理员访问备份文件夹并能够看到所有用户的图像。

在图像保存在服务器上的备份文件夹中之前,我想对用户图像进行编码,当他们请求图像时,它将解码并显示。

这可能吗?

我之所以想这样做,是因为我担心FB图像的URL会被破坏,因此图像不会显示在网站上。

function checkImage($url) {
    if (@getimagesize($url)) {
        echo  "image exists ";
    } else {
        echo  "image does not exist";
    }
}

是的,这是可能的,也是一件好事

我已经在这类系统上工作过,我在类似谷歌硬盘或dropbox的网站上工作过。用户文件的安全/隐私是第一位的,你所说的非常有效和合理。

让我向你解释一下你可以做些什么来实现这一点,这样即使管理员/任何人都可以通过ftp访问该文件夹,他/她也根本看不到图像。

当你将图像保存到数据库中,并保存facebook的链接以检查其是否有效时,还保存图像中的以下信息,以便以后使用它们来解密图像。

  • 文件大小
  • 图像类型
  • 图像扩展
  • 图像原始名称
  • 图像加密名称
  • 图像路径
  • 图像用户
  • 用户路径

现在让我来解释一下这些列对您的系统意味着什么。

文件大小显然是您保存到服务器的图像的大小,以防您需要了解服务器的信息。

图像类型应该是类似于image/jpegimage/png 的文件类型

图像扩展应该是图像的扩展,您需要使用它来解密系统内的图像。

图像原始名称也应用于系统解密图像以显示原始图像名称

比方说,php的headers函数内部将使用图像原始名称+图像扩展名。

图像加密名称,这将是一个没有文件扩展名的随机字符串,例如:

假设你有一个名为:myimage.jpeg的图像,现在你要做的是将原始文件名和扩展名保存到数据库中,然后在使用php的move_uplooaded函数将文件移动到用户的文件夹中(文件夹也可以是每个用户唯一的随机字符串),然后只需将上传过程中的文件重命名为类似823982j3kkj2hjh3j2h323hj2h3jh23jh的文件,只是一个名为文件夹的随机字符串中没有扩展名的随机字符串,该文件夹与用户相关,即使用户也不知道,并将该随机字符串名称与图像的其他详细信息一起保存,稍后您需要识别图像并将其重命名为具有扩展名的原始图像。

图像路径应该是图像文件夹的完整路径,您需要它来识别存储图像的文件夹

图像用户这显然是用户的id

用户路径这是一个随机字符串命名的文件夹,图像将存储在中

通过这种方式,你将加密图像,它将只对用户可见,只有从系统的功能,甚至管理员将无法识别连接到用户的文件夹或文件,文件将在没有扩展名和原始名称的情况下保存,因此只有系统能够解密它。

我希望我已经给你一个如何做到这一点的想法。