Ограничить доступ к файлам авторизованным пользователям php

Я унаследовал приложение с вопиющим ядром безопасности.

У этого есть безопасность на основе сеанса, но загрузка файлов (которые специфичны для пользователя) не защищены каким-либо образом и они хранятся в общем дереве файлов.

Имена файлов не соответствуют никакому соглашению как таковому, что затрудняет их угадывание, но данные чувствительны, и поэтому мне нужно выполнить меры безопасности для предотвращения несанкционированного доступа к файлам.

Перемещение местоположения файлов на самом деле не является вариантом, поэтому я рассматриваю решение htaccess для пересылки запросов на скрипт обработчика php.

У кого-нибудь есть опыт в реализации этого типа вещей или каких-либо хороших альтернативных решений? Конкретные примеры синтаксиса .htaccess очень ценятся, поскольку я борюсь в этой области.

Не понимаю, почему их перемещение не является вариантом, так как запрос на них для обработчика означает, что больше не важно, где они хранятся. Но ты – человек на сцене.

.htaccess выглядит так:

RewriteEngine on RewriteRule path/to/where/these/files/live/(.*) /handlerscript.php/$1 

Затем вы берете оставшийся путь и имя файла из $_SERVER['PATH_INFO'] .

Ну, вы можете сделать файл apache parse .jpg для определенной папки, добавив следующее к вашему .htaccess

 AddHandler php5-cgi .jpg 

то вы можете установить файл php для разбора запроса так, как хаос рекомендовал вас и выполнил определенную проверку, а затем просто вернул заголовки jpeg вместе с правильным изображением, которое вам хотелось бы отображать

вот пример

 <?php if($validUser) { header("Cache-control: No-cache"); header("Pragma: No-cache"); header("Content-Type: image/jpeg"); //correct picture address $img = imagecreatefromjpeg("2326_b_lil.jpg"); imagejpeg($img); } else { //code for error image } ?> 

пожалуйста, дайте мне знать, если вы хотите более подробный пример

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

Скрипт может взять веб-путь к изображению, решить, имеет ли пользователь доступ, а затем использовать что-то вроде fpassthru для подачи фактического изображения в браузер.

Однако все ссылки на изображения необходимо изменить, чтобы ссылаться на исполняющий скрипт.

Поэтому вместо доступа к изображениям с /images/123/5423453245.jpg, это будет /image.php?images/123/5423453245.jpg

Или что-то подобное этому.