как ограничить загрузку файловой системы через браузер только через мое веб-приложение
-
22-09-2019 - |
Вопрос
Мне нужен наилучший способ предотвратить любой доступ к файлам doc, если это не мое веб-приложение, например, мне нужно, чтобы некоторые файлы были скрыты от поисковых систем или общедоступных пользователей, и только частные пользователи могли получить к ним доступ и загрузить их.
Я хотел бы сохранить файлы в файловой системе, а не в БД, чтобы не увеличивать использование БД.
Решение
Вы можете хранить свои файлы в файловой системе, в каталоге, доступ к которому невозможен по URL-адресу (например, в аналоге вашего корневого веб-каталога).Это предотвратит прямой доступ.
Затем напишите PHP-скрипт, который при запросе данного файла проверит, может ли пользователь получить доступ к этому файлу, и отправит его с readfile
(вместе с header
для типа контента и расположения контента).
Другие советы
Когда вы говорите "только частные пользователи", я предполагаю, что это означает, что эти пользователи каким-то образом аутентифицированы.Вы могли бы хранить эти файлы вне веб-каталога, а затем обслуживать их с помощью PHP / Perl /Your_Favorite_Programming_language.
Ссылка может вести к скрипту, который проверяет, аутентифицирован ли этот пользователь, если да, передайте файл с помощью скрипта.
В php, после аутентификации пользователя, вы могли бы использовать:
header('Content-disposition: attachment; filename=movie.mpg');
header('Content-type: video/mpeg');
readfile('/full/path/to/your/files/movie.mpg');
Просто не забудьте создать этот каталог вне вашего webroot и установить разрешения для того же пользователя, от имени которого выполняются ваши скрипты (nobody, обычно под apache).
Robots.txt это способ заблокировать / разрешить определенные пользовательские агенты HTTP.Однако это не самый безопасный способ.Вы могли бы использовать базовую аутентификацию, чтобы разрешить вход в ваше веб-приложение.