php - 如何保护用户上传到我网站的私有(private)照片?

标签 php image uploading

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

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

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

提前感谢您的帮助!

最佳答案

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

要解决共享问题,您可以给他们一个区域,他们可以在其中说“共享这张照片”,它会显示如下 URL

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

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

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

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

或者只是允许图像公开/私有(private)。

关于php - 如何保护用户上传到我网站的私有(private)照片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3815912/

相关文章:

php - 通过post将结构化数据传递给php

php - SQLSTATE[42S02] : Base table or view not found: 1146 Table

javascript - 如何使用 TINYMCE images_upload_handler 发送其他 POST 数据

asp.net - 从 ASP .Net 下载文件时,文本文件会附加 HTML 内容

php - 在 Laravel 迁移中重命名现有列的错误

javascript - 通过ajax发送图像的最佳方式

java - 优化图像显示的性能

ajax - 使用 ajax 表单上传 mvc3 文件 - Request.Files 为空

IOS 应用程序加载器显示捆绑错误,带有 armv7s 和 armv7

php - 如何在 fputcsv 中使用 foreach?