Я попытаюсь выяснить, как защитить каталог от неавторизованного или неавтоматизированного пользователя для загрузки файлов. Заранее спасибо.
Не удается найти хороший дубликат, но небольшой поиск приведет к таким результатам, как этот PHP, защищает папку
Существует простой способ ограничить доступ к папкам на основе авторизации сеанса PHP, используя php. Это требует создания файлов-заглушек для действительных разрешенных санкций (и автоматизации их удаления). В PHP вы делаете:
if ($user_has_permission_to_download) { touch("tmp/access-" . session_id()); }
Тогда простая авторизация + rewritecond может затем служить для авторизации:
RewriteCond %{HTTP_COOKIE} PHPSESSID=(\w+) RewriteCond ../tmp/access-%1 -f RewriteRule ^(.+)$ $1 [L] RewriteRule .+ /deny [L]
Первый блок разрешает доступ, когда найдено соответствующее значение cookie, и существует файл-заглушка авторизации. Второе правило блокирует доступ для всех остальных.
Поместите файл .htaccess в каталог с файлами со следующим содержимым
deny from all
Затем создайте скрипт, который использует, например, readfile (), чтобы обслуживать файл, если пользователь авторизован.
Я предполагаю, что у вас есть скрипт для пользователей / пользователей, который аутентифицирует пользователя? Используйте .htaccess переписывайте правила для пересылки запроса файла через php-скрипт, который проверяет переменную сеанса, если пользователь зашел в систему, а затем возвращает файл.
Что-то из лося:
.htaccess RewriteEngine on RewriteRule ^(.*).(pdf|exe|doc|whatever)$ some-script.php?file=$1.$2 [L] <?php if(loginCheck()) //function somewhere that checks session if user is logged in { return fopen('../files/' . $_GET['file']); //open and return the requested file }
Это просто псевдокод, чтобы дать вам представление о том, что вам нужно делать. Вам также может потребоваться повторить правильные заголовки файлов.
И чтобы люди не переходили в каталог файлов, я рекомендую поместить файл .htaccess в папку THAT, а также deny from all
чтобы остановить EVERYONE от доступа к нему.
.htaccess – ваш лучший друг. Положите отказ от всех в этот файл .htaccess. Или если вы не хотите использовать файл .htaccess для шифрования и все время изменять путь загрузки (LOL!).
См. Можно ли защитить от загрузки видео с сайта