Каков наилучший способ скрыть файл на сервере?

Я собираюсь создать систему размещения изображений в PHP. Я задавался вопросом, как мне скрыть свои изображения от пользователей, чтобы их можно было получить только через специальный URL-адрес.

Мне нужно обсудить все методы, которые включают htaccess.

я бы предпочел, чтобы вместо того, чтобы PHP-процесс отправлял файлы и ресурсы сервера hog в течение длительного времени при отправке содержимого. создайте скрипт, который копирует файл в каталог со случайным именем, а затем просто отправляет этот файл пользователю и еще один скрипт очистит этот каталог после заданных интервалов .. если время создания старше 30 минут .. удалить .. таким образом u минимизировать u просто нужен процесс apache, чтобы отправить обратно файл вместо процесса apache + php.

Поместите файлы за пределы относительного корня и используйте сценарий, например showimage.php, чтобы захватить файл за пределами веб-сайта и передать его пользователю. Код будет выглядеть примерно так:

$len = filesize($filename); header("Content-type: image/jpeg"); header("Content-Length: $len"); header("Content-Disposition: inline; filename=\"$new_filename\""); readfile($filename); 

Кроме того, поскольку вы запускаете скрипт, вы можете выполнять аутентификацию / авторизацию в скрипте. Это позволяет вам установить правило modRewrite, такое как:

 RewriteRule ^images/(.*)$ /showimage.php?file=$1 

так что ваши файлы изображений можно разделить на:

 www.domain.com/images/somefile.jpg 

вместо:

 www.domain.come/showimage.php?file=somefile.jpg 

Вы пишете небольшой скрипт php, который читает файл изображения и отправляет его клиенту. Сценарий PHP может проверять его параметры и файлы cookie, а изображение сохраняется где-то вне корня документа.

Просто не сохраняйте свои изображения в корневом каталоге. Используйте php-файл для управления доступом. Когда вы хотите показать файл, сделайте что-нибудь вроде:

 <?php header('Content-type: image/jpeg'); $f = file_get_contents('path/to/image.jpg'); print $f; ?> 

Поместите их в каталог в один конец от вашего корня документа. Затем используйте файл .htaccess, чтобы захватить их:

 RewriteBase / RewriteRule ^(.+?)\.jpg$ ../imgs/$1.jpg 

Я думаю, что лучшим способом было бы зашифровать его.