Я попытаюсь выяснить, как защитить каталог от неавторизованного или неавтоматизированного пользователя для загрузки файлов. Спасибо заранее.
Лучшая стратегия защиты загружаемых файлов -php/mysql Apache2 server
Ответ 1
Невозможно найти хороший дубликат, но небольшой поиск приведет к таким результатам, как 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, и существует файл-заглушка авторизации. Второе правило блокирует доступ для всех остальных.
Ответ 2
Поместите файл .htaccess в каталог с файлами со следующим содержимым
deny from all
Затем создайте script, который использует, например, readfile(), чтобы обслуживать файл, если пользователь авторизован.
Ответ 3
.htaccess - ваш лучший друг. Положите отказ от всех в этот файл .htaccess. Или если вы не хотите использовать шифрование файла .htaccess и постоянно меняете путь загрузки (LOL!).
Ответ 4
Я предполагаю, что у вас есть пользователь/логин script где-то, который аутентифицирует пользователя? Используйте .htaccess переписать правила для пересылки запроса файла через php script, который проверяет переменную сеанса, если пользователь зашел в систему и возвращает файл.
Что-то из лося:
.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
, чтобы остановить доступ КАЖДОГО.