ограничение пользователей подкаталогами - PullRequest
0 голосов
/ 23 ноября 2011

У меня есть подкаталог пользователей, для которого я хочу ограничить каждую подпапку только этим пользователем.

Например, у меня есть /users/user1, где я хочу защитить папку user1, чтобы только пользователь user1 мог получить к ней доступ.файлы внутри.

Я попытался поиграться с файлами .htaccess и .htpasswd, но мне было предложено войти во второй раз, даже если я прошел аутентификацию в базе данных MySQL.

Я не уверен, что делать, чтобы в основном автоматически обрабатывать второй запрос на вход, поскольку пользователь должен был пройти аутентификацию ранее.

Я могу опубликовать некоторый код, который у меня есть для моего .htфайлы, но я подумал, что эта информация может привести мяч в движение.

1 Ответ

1 голос
/ 23 ноября 2011

Я думаю, что в этом случае было бы достаточно использовать php-прокси для доступа к файлам, что-то вроде:

download.php

<?php
   /** Load your user assumed $user **/

   $file = trim($_GET['file']);

   /** Sanitize file name here **/

   if (true === file_exists('/users/user'.$user->id.'/'.$file)) {
       //from http://php.net/manual/en/function.readfile.php
       header('Content-Description: File Transfer');
       header('Content-Type: application/octet-stream');
       header('Content-Disposition: attachment; filename="'.$file.'"');
       header('Content-Transfer-Encoding: binary');
       header('Expires: 0');
       header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
       header('Pragma: public');
       header('Content-Length: ' . filesize($file));
       ob_clean();
       flush();
       readfile($file);
       exit;
   } else {
       throw new Exception('File Not Found');
   }

.htaccess Запретить все прямые загрузки файлов

deny from all

После этого вы будете ссылаться на папки, используя /download.php?file=filename.ext, и он будет загружать этот файл только из каталога пользователей текущего пользователя.

Вы захотите убедиться, что вы дезинфицируете имя входного файла, чтобы вы не были уязвимы для эксплойтов через каталог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...