0

我想知道,我已经为 wordpress 制作了一个 php 插件,它要求作为图像存储。如果您登录,您会看到分配给您的文件。然后你点击下载,它会下载它们。

问题是,如果您知道 URL,则无论如何都可以下载图像。如果他们知道图像的唯一 URL,我如何轻松阻止用户下载图像,而只允许具有登录权限的人查看它。

我的想法是:

  1. 某种检查引用 URL 的 HTACCESS hack
  2. 一种 KEY 系统,仅在提供密钥的情况下才允许下载文件。

任何信息或想法都会非常有用,谢谢。

4

3 回答 3

0
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule \.(gif|jpg|js|css)$ - [F]

请务必将“mydomain.com”替换为您自己的。当指定文件类型的热链接发生时,上面的代码会创建一个失败的请求。如果是图像,则会显示损坏的图像。

于 2013-02-01T12:17:49.460 回答
0

如果您使图像对世界不可读(例如 www 目录之外的目录,或者只是使用 .htaccess 阻止它(无需进行推荐检查),您可以确保没有人可以访问您的图像。

getImage.php?imageid=xxxx然后通过检查凭据的文件(例如 )提供您的图像,如果确定则读取图像(您的 php 进程可以读取图像,例如使用file_get_contents())然后提供它。

(使用正确的标题,你会没事的header("content-type: image/your_image_type");:)

于 2013-02-01T12:18:35.980 回答
0

要保护文件,您可以执行以下两项操作之一

  1. 将文件放在安全区域(在您的公共可访问文件夹之外)。将其名称存储在数据库中,当某人单击下载时,您会选择该文件并让他们下载。
  2. 切勿将文件 url 公开。当有人想要下载图像时,他们将单击下载,您可以使用时间戳在当时生成一个唯一的文件名,并使用别名文件名传输下载。显然,该文件实际上不会存在于服务器上。您只是拿起原始文件并更改其名称,因此当有人收到它时,他们将无法猜测其路径。但是,如果由于某种原因路径公开,那么他们可以访问该文件。

选项 1 主要用于人们存储文档签名等时,如果您无权访问此类文件夹(例如在共享托管环境等中),则可以使用选项 2。

于 2013-02-01T12:21:56.690 回答