10

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

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

我需要采取任何其他步骤来确保只有用户才能看到他们的照片吗?我非常重视用户隐私,并希望做到这一点。

提前感谢您的帮助!

4

4 回答 4

9

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

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

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

XA21IW 将是存储在表中的一些唯一哈希,它们可以指定生命周期,或者您可以自己编写代码。当页面加载并传入 v 时,您可以查找一个表以确定它是否是该图像 ID 的有效哈希。

你在这里有一些选择。每次他们点击“分享这张照片”时,您都可以:

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

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

于 2010-09-28T18:40:49.230 回答
2

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

如果无法将查看链接到用户帐户,您可以在图像或图像组(例如画廊)上设置“查看密码”;查看图像的 URL 将检查用户/所有者是否是查看者,如果不是,它将要求输入密码。

于 2010-09-28T18:35:59.100 回答
1

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

谢谢。

于 2010-09-28T18:41:03.200 回答
0

您将图像保存到您的服务器,放置图像名称,您需要的数据和一些哈希在您的数据库中......而不是将图像的路径设置为名为 images.php 的 php 文件,您可以在其中使用 GET 接收此哈希并通过哈希查找图像来自您的数据库,并将标题设置为图像/GIF 示例创建图像。图像的路径是 images.php?hash=abcdefg。

其他人考虑用户许可,所以......我认为这个解决方案有一些回应......它很安静......

于 2010-09-28T18:42:42.963 回答