2010-09-28 59 views
10

我正在使用PHP/MySQL来处理图片上传。我希望所有上传到登录用户图库的图像只能由登录用户访问。我不希望人们能够猜出文件名并直接链接到它。如何保护用户在我的网站上上传的私人照片?

我在想,我只能将图像存储在webroot之外并通过某些PHP访问它们。但是,如果用户想通过链接与朋友分享图片,我会怎么做?

是否有任何其他步骤需要我确定只有用户才能看到他们的照片?我非常重视用户隐私,并希望得到这个权利。

感谢您的帮助提前!

回答

9

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

要解决共享问题,你可以给他们一个领域,他们可以说“分享照片”,它会显示一个URL像

http://www.yoursite.com/image/12390123?v=XA21IW 

XA21IW将被存储在一个表中的一些独特的哈希和他们可以指定一个生命周期,或者你可以自己编码。当页面加载并传入v时,可以查找表以确定它是否是该图像标识的有效散列。

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

  1. 销毁所有的旧哈希
  2. 添加到堆栈
  3. 让他们配置的到期等等...

或者只需允许图像为公共/私人。

+0

+1我是2s发布非常相似的东西。 – Nacho 2010-09-28 18:42:21

+1

感谢您的快速响应。这与我计划采取的方法非常相似。我基本上想确保没有更安全的方法,而且我没有忘记任何事情。谢谢! – sherril8 2010-09-28 20:15:44

2

您可以使用基于配置文件(用户)的共享系统,其中登录用户A可以指示登录用户B被允许查看图像C,并可以随意添加/删除这些权限。

如果无法将查看连接到用户帐户,您可以在图像或图像组(例如图库)上查看密码。查看图像的URL将检查用户/所有者是否是一个查看者,如果不是,则会要求输入密码。

1

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

谢谢。

0

您将图像保存到您的服务器,放置图像名称,您需要的数据和一些散列在您的DB .... 比您设置的图像路径为php文件称为images.php您收到此散列与GET并通过哈希从您的数据库中找到图像,并将头部设置为图像/ GIF示例创建图像。图像路径将是images.php?hash = abcdefg。

其他认为关于用户许可等等...我认为有一些回应这个解决方案...它很安静容易...

相关问题