[英]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.