Лучшая стратегия защиты загружаемых файлов -php / mysql Apache2 server

Я попытаюсь выяснить, как защитить каталог от неавторизованного или неавтоматизированного пользователя для загрузки файлов. Заранее спасибо.

Не удается найти хороший дубликат, но небольшой поиск приведет к таким результатам, как этот 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!).

См. Можно ли защитить от загрузки видео с сайта