0

我有一个名为“images”的文件夹和以其所有者的用户名命名的子文件夹。

如何使用会话向其所有者授予对文件夹内容的访问权限?

我应该使用这样的东西吗?

header('Content-Type: image/png');
if (userIsLoggedIn()) {
  readfile('images/username/randomlygeneratedimagename.png');
} else {
  die();
}

但是,如果有人找到图像的来源,他可以直接访问它而无需登录...

更一般地说,是否有必要拥有这样的安全性?如果所有者不分享他的图像,没有人会猜到文件名并访问它......

谢谢你的帮助!

4

1 回答 1

1

你基本上得到了正确的解决方案。只需确保将资产存储在不可公开访问的位置即可。如果您的 PHP 脚本可以读取这些图像,那么它可以使用您的代码为它们提供服务——这些资产实际上并不需要直接下载即可使用。

还有一点,如果您想要一个性能稍高的解决方案,请考虑使用 X-SendFile 标头方法(用于 Apache 的 mod_xsendfile,或使用 lighttpd 或 nginx 的内置功能)。这让您可以告诉 Apache 提供什么文件,而无需传递实际数据。它实际上很容易设置(比您的方法更容易,IMO),并且特别适用于提供大文件或大幅扩大音量。

于 2013-09-02T21:15:21.233 回答