как ограничить загрузку файловой системы через браузер только через мое веб-приложение

StackOverflow https://stackoverflow.com/questions/1979268

Вопрос

Мне нужен наилучший способ предотвратить любой доступ к файлам 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.Однако это не самый безопасный способ.Вы могли бы использовать базовую аутентификацию, чтобы разрешить вход в ваше веб-приложение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top