Здравствуйте, коллеги! Недавно столкнулся со следующей проблемой, над которой я бьюсь уже несколько дней:
Есть конструктор сайтов. Все файлы пользователей, которые они создают и редактируют сохраняются вне дерева веб документов. Для предпросмотра/редактирования файла используется php скрипт-посредник. Этот скрпит инклудит требуемый файл (в нашем случае - файл для предпросмотра/редактирования), а также исключает ситуацию, когда пользователи могут получать доступ к файлам других юзеров, в то время как основной код подключает этот самый скрпит.
Но проблемы начинаются, когда пользователь захочет добавить картинку на свой сайт. Допустим, в файле (который, повторюсь, находится вне дерева веб-документов) встречается вот такая вот строчка (в результате загрузки фото пользователем, и добавлением фото в каталог проекта юзера посредством специального интерфейса):
<img src='photo.jpg'>
А вот тут самое интересное.
Допустим, вот так выглядет каталог проекта пользователся (вне дерева веб-документов):
А вот так выглядет каталог, содержащий файлы для предпросмотра пользовательского файла (напомню, что эти файлы инклюдят пользовательские файлы, и эти самые файлы могут быть также подключены (при помощи подключения или iframe)):
При запуске preview.php (с необходимыми параметрами, разумеется) обнаружется, что вывод содержит недействительную ссылку (photo.jpg).
Так вот, как реализовать механизм, который не имел бы вышеописанной проблемы. Можно ли внести какие-либо поправки в существующую систему для решения проблемы? Как бы сделали Вы?
Очень важно как-то изолировать пользователей друг от дргуа. Я имею в виду безопасность - через браузер (и без надлежащей авторизации) получить достпу к файлам пользователей получить должно быть попросту невозможно.
Заранее выражаю огромную благодарность всем, кто поможет