Я унаследовал приложение с вопиющим ядром безопасности.
У этого есть безопасность на основе сеанса, но загрузка файлов (которые специфичны для пользователя) не защищены каким-либо образом и они хранятся в общем дереве файлов.
Имена файлов не соответствуют никакому соглашению как таковому, что затрудняет их угадывание, но данные чувствительны, и поэтому мне нужно выполнить меры безопасности для предотвращения несанкционированного доступа к файлам.
Перемещение местоположения файлов на самом деле не является вариантом, поэтому я рассматриваю решение 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
Или что-то подобное этому.