防止直接访问EDM等文件(?)

问题描述 投票:-1回答:2

我有一个由几个用户使用的PHP Web应用程序。他们可以在目录中上传文件:“files”创建一个子目录,使用给用户“foo”的唯一名称并存储文件,因此:mydomain.com/files/foo/thefilename.doc

它可以但是为了防止直接访问文件并阻止其他用户访问他们不属于的文件,我放置了一个.htaccess文件:

Order Deny,Allow
Deny from all

它工作但是,在我的网络应用程序中,如果用户“foo”想要访问并显示他的文件,他会收到403错误。

我如何(如EDM电子文档管理)存储文件阻止直接访问,但允许访问正确的用户?

非常感谢

php .htaccess access
2个回答
0
投票

您可以通过动态使用PHP并呈现文件内容来实现。

也许是这样的:

$filename = $_GET['filename'];
// TODO: fill $allowedFiles[];
if (!in_array($filename, $allowedFiles))
   exit;

header('Content-Type: text');
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0');

echo file_get_contents($filename);

当然这只是概念


0
投票

为什么不使用会话?

只需在每个页面的开头添加<?php session_start() ?>(在<! DOCTYPE>之前。并在用户登录后限制访问某些文件?

More info about the php session

© www.soinside.com 2019 - 2024. All rights reserved.