@djok2142

Как заблокировать прямой доступ к файлам в папке через nginx или .htaccess?

Есть папка uploads, файлы из нее скачиваются по ссылке site.ru/file.php?name=some_file.zip&hash=hgf35hghk23g5hkgh
То есть сриптом проверяю хеш и если он верен то с помощью заголовка X-Accel-Redirect передаю ссылку site.ru/uploads/some_file.zip в nginx а тот его уже отдает пользователю.
Подскажите пожалуйста как заблокировать прямой доступ к содержимому папки uploads что бы файл нельзя было скачать по прямой ссылке site.ru/uploads/some_file.zip

Пробовал в конфиге nginx прописывать
location ^~ /uploads/ {
        deny all;
    }

Прямой доступ закрывается, но и по ссылке site.ru/file.php?name=some_file.zip&hash=hgf35hghk23g5hkgh файл становится недоступен.
Так же пробовал в корне папки размещать файл .htaccess с содержимым
Order Deny,Allow
Deny from all

Но это не работает.
  • Вопрос задан
  • 2188 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Mysterion
У Вас, видимо, скрипт из этой директории дергает файл, поэтому нельзя сказать?
Запретите доступ к uploads для всех, кроме своего веб-сервера.
Ответ написан
Комментировать
@djok2142 Автор вопроса
Нужно добавить internal;, получилось так
location ^~ /uploads/ {
        internal;
    }


Директива internal указывает что данная область будет доступна только если происходит внутреннее перенаправление nginx в указанную директорию. Таким образом, даже зная прямой адрес ресурса на сервере, мы будем получать 404 в ответ на наш запрос

Помогла эта статья
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы