У меня есть веб-сайт, и я хочу, чтобы только зарегистрированные пользователи могли скачать конкретный файл. Для этого я следующую структуру:PHP: Разрешить загрузку файла только авторизованным пользователям
В каталоге, где я, имеющий оригинальный установочный файл, я создал файл .htaccess с:
Order Deny,Allow
Deny from all
И из файла под названием download.php, Я называю этот файл, используя:
<?php
$filename = "127.0.0.1/eye/setup/setup.msi";
if(ini_get('zlib.output_compression'))ini_set('zli b.output_compression', 'Off');
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile("$filename");
exit();
?>
Но, проблема: Если кто-нибудь знает точное местонахождение моего файла, он/она может легко настроить подобный PHP файл на его/ее сервер, передавая $ имя файла как оригинальное местоположение. Итак, как я могу полагаться на этот скрипт для обеспечения безопасности?
Есть ли еще стратегия?
Защита паролем с использованием '.htaccess/.htpasswd' или использование базы данных с зарегистрированными пользователями. –
Ваш вопрос сводится к: как я могу отличаться между авторизованным пользователем и неавторизованным пользователем. Ответ: вам нужно администрирование пользователей, управление сеансом, и вам необходимо ограничить определенные действия сеансами с ранее прошедшим аутентификацию пользователем. – arkascha