Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何保护用户上传到我网站上的私人照片?_Php_Image_Uploading - Fatal编程技术网

Php 如何保护用户上传到我网站上的私人照片?

Php 如何保护用户上传到我网站上的私人照片?,php,image,uploading,Php,Image,Uploading,我正在使用PHP/MySQL处理图像上传。我希望上载到登录用户库的所有图像仅可由登录用户访问。我不希望人们能够猜测文件名并直接链接到它 我认为我可以将图像存储在webroot之外,并通过一些PHP访问它们。但是,如果用户希望稍后通过链接与朋友共享图像,我将如何允许 我是否需要采取任何其他步骤来确保只有用户才能看到他们的照片?我非常认真地对待用户隐私,希望做到这一点 提前谢谢你的帮助 您可以使用基于配置文件(用户)的共享系统,其中登录的用户a可以指示登录的用户B可以查看图像C,并且可以随意添加/删

我正在使用PHP/MySQL处理图像上传。我希望上载到登录用户库的所有图像仅可由登录用户访问。我不希望人们能够猜测文件名并直接链接到它

我认为我可以将图像存储在webroot之外,并通过一些PHP访问它们。但是,如果用户希望稍后通过链接与朋友共享图像,我将如何允许

我是否需要采取任何其他步骤来确保只有用户才能看到他们的照片?我非常认真地对待用户隐私,希望做到这一点

提前谢谢你的帮助

您可以使用基于配置文件(用户)的共享系统,其中登录的用户a可以指示登录的用户B可以查看图像C,并且可以随意添加/删除此类权限


如果无法将查看链接到用户帐户,则可以在图像或图像组(如图库)上设置“查看密码”;查看图像的URL将检查用户/所有者是否是查看者,如果不是,则需要密码。

您最初的假设是正确的。将文件存储在公共目录之外,并使用PHP脚本检查授权并显示图像

为了解决共享问题,你可以给他们一个区域,让他们可以说“共享这张照片”,它会显示一个URL,如

http://www.yoursite.com/image/12390123?v=XA21IW
XA21IW是存储在表中的一些唯一哈希,它们可以指定生存期,也可以自己编写一个。当页面加载并传入v时,您可以查找一个表以确定它是否是该图像id的有效哈希

你在这里有一些选择。每次他们单击“共享此照片”时,您可以:

  • 销毁所有旧散列
  • 添加到堆栈中
  • 允许他们配置过期等

  • 或者只允许图像是公共/私有的。

    我认为将图像存储在webroot之外并通过一些PHP访问它们是没有问题的。当任何用户共享php脚本时,您都可以使用该脚本访问它们。。即使这样做更安全,因为您始终可以执行一些安全检查。在实际显示图像之前


    谢谢

    您将图像保存到服务器,将图像名称、所需数据和一些散列放入数据库中。。。。 然后,将图像的路径设置为名为images.php的php文件,在该文件中,您可以从数据库中通过GET和find image by hash接收此哈希,并将头设置为image/GIF example create image。图像的路径将是images.php?hash=abcdefg


    其他人考虑用户权限,所以。。。我认为有一些回应与这个解决方案。。。非常简单…

    感谢您的快速响应。这与我计划采取的方法非常相似。我基本上是想确保没有更安全的方式,我不会忘记任何事情。谢谢