Загрузка файлов в папку, в которую могут войти только пользователи, может читать php - PullRequest
0 голосов
/ 20 января 2012

Привет, у меня проблема с созданием безопасной папки для загрузки в проекте.

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

Возможно ли сделать папку не читаемой, но доступной со страницы php?

Сервер является linux inviroment

Ответы [ 3 ]

1 голос
/ 20 января 2012

Есть несколько способов сделать это.

  1. Конфигурация Apache (вы можете ограничить доступ к определенному каталогу с помощью IP-безопасности или HTTP-авторизации), см. allow, deny и apache authentification

  2. Сохраните файлы в каталог, который не доступен через веб-сайт, и напишите свой собственный каталог php и загрузите файл, через readfile

  3. Загрузить файл в каталог, который будет доступен только через «секретный» ftp / sftp.

1 голос
/ 20 января 2012

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

Если файлы находятся за пределами корневого веб-каталога, к ним нельзя получить прямой доступ по URL-адресу типа /path/to/file.ext.

0 голосов
/ 20 января 2012

В таких случаях я бы находил папку вне корня документа или ограничивал ее доступ с помощью директив Apache.

Затем, используя PHP и проверив учетные данные доступа, выведите файл с помощью readfile ()

Вот пример из руководства

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...