繁体   English   中英

如何防止通过会话访问PHP中的图像文件夹?

[英]How to prevent access to an image folder in PHP with sessions?

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

如何通过会话将对文件夹内容的访问权授予其所有者?

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

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

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

更一般地说,是否需要这种安全性? 如果所有者不共享其图像,则没人能猜出文件名并访问它...

谢谢你的帮助!

您基本上已经找到了正确的解决方案。 只要确保将资产存储在不可公开访问的位置即可。 如果您的PHP脚本可以读取图像,则可以使用您的代码为它们提供服务-资产实际上不必具有可访问性即可直接下载以使其工作。

还有一点,如果您想要一种性能更高的解决方案,请考虑使用X-SendFile标头方法( Apache的mod_xsendfile ,或使用lighttpd或nginx的内置功能)。 这让您告诉Apache服务哪个文件,而不必传递实际数据。 它的设置实际上非常容易(比您的方法IMO更容易),并且特别适合于处理大型文件或显着扩大容量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM