如何在服务器上保护用户的图像?

时间:2016-05-15 15:47:07

标签: php image server facebook-php-sdk

我的网络应用程序非常简单。有两个按钮:一个叫“保存”,另一个叫“显示我的图像”。 基本上,用户可以保存来自Facebook API的图像,并将它们存储在名为“backup”的服务器文件夹中(以便在服务器上备份他们的图像,这样如果他们从FB中删除了他们的FB或图像,他们就会有备份)< / em>的

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

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

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

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

    这可能吗?

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

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

1 个答案:

答案 0 :(得分:0)

是的,这是可能的,这是好事

我已经在这类系统上工作了,我曾经在类似谷歌驱动器或Dropbox的网站上工作,并且用户文件的安全/隐私首先出现,你所做的非常有效合理的。

让我向您解释一下如何使这成为可能,即使管理员/任何人都有ftp访问该文件夹,他/她根本无法看到图像。

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

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

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

文件大小显然是您保存到服务器的图片大小,以防您需要有关服务器洞察的信息。

图片类型应该是文件类型,例如:image/jpegimage/png

图片扩展程序应该是图片的扩展名,您需要将其用于解密系统内的图片。

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

假设图像原始名称+图像扩展名将用于php的headers函数内。

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

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

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

图片用户这显然是用户的ID

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

通过这种方式,您将对图像进行加密,只有系统的功能才能让用户看到它,即使管理员也无法识别连接到用户的文件夹或文件。文件将在没有扩展名且没有原始名称的情况下保存,因此只有系统才能解密它。

我希望我已经告诉你如何做到这一点。