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

时间:2017-12-19 08:36:30

标签: php .htaccess access

我有几个用户使用的php web应用程序。他们可以上传目录中的文件:" files"使用为用户提供的唯一名称创建子目录" foo"并存储文件,因此:mydomain.com/files/foo/thefilename.doc

它有效,但为了防止直接访问该文件并阻止其他用户访问他们不属于的文件,我将.htaccess文件放在:

Order Deny,Allow
Deny from all

它可以在我的网络应用程序中工作,如果用户" foo"想要访问和显示他的文件,他收到403错误。

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

非常感谢

2 个答案:

答案 0 :(得分: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);

当然这只是概念

答案 1 :(得分:0)

为什么不使用会话?

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

More info about the php session