шаблоны с php-кодом: как обезопасить

carfax

Guest
Demiurg

Согласен, "...защищаем все скрипты друг от друга с помощью safe_mode..." - это хорошо.

Тут вот какое дело - у каждого сайта своя собственная база. Конфиги движка хранятся в отдельной базе. Соответственно, скрипт, написанный внутри шаблона, имеет возможность вломиться только на в свою собственную базу (этого нам тоже не надо). Напрямую в базу с конфигами он попать не может, но он может прочитать файлик conf.php, в котором лежит пароль к этой базе и дальше уже делать что угодно.

Плюс, мне надо защитить скрипты принадлежащие ядру системы или другим сайтам от изменения.

Нюанс тут такой: все эти защиты нужны только для тех случаев, когда клиенту хватает ограниченного доступа к движку - в режиме, когда клиент может делать только то, что разрешает ему система (изменение структуры сайта, управление дизайном, управление записями, управление пользователями и т. п.) То есть, если клиенту движок сдается "под ключ".

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

Demiurg

Guest
Что то я непонял, и где возникает брешь в бесопасности ?
 

carfax

Guest
Я позволяю клиенту менять шаблоны. В шаблонах можно использовать код php. Злобный клиент может прочитать файл конфигурации и узнать пароль к основной базе движка. Из основной базы движка он может узнать пароли к другим базам... ну и т. п.

Речь ведь изначально шла именно о том, как оставить шаблоны в виде php-шных файлов, позволить их редавтировать клиенту и при этом не бояться его злых умыслов.
 

Demiurg

Guest
подожди, речь идет о тех клиентах, которым сдается все "под ключ" или о тех, которым дается копия движка ?
 

carfax

Guest
проблема с теми, которым "под ключ"

Можно конечно им вообще запретить дизайн менять (править шаблоны), но это крайность.. Хочется эту возможность им оставить.
 

Demiurg

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

carfax

Guest
Demiurg
Спасибо за консультацию. Это действительно более правильный подход. Что-то подобное и придется однажды сделать (в следующей версии движка, вероятно). Сейчас перейти на такую систему будет сложно, поскольку файловая структура движка уже устоялась и менять ее будет сложно. А в том виде, в котором она сейчас, четкого разделения сайтов по папкам не сделать.

Порок этапа проектирования - сначала был написан каркас движка, а уже потом придумалось сделать возможность запускать несколько сайтов на одной копии движка.

В общем, поздно пить баржоми.. Надо думать, как сделать безопасное редактирование шаблонов, без того, чтобы разграничивать доступ к файлам средствами операционной системы и веб-сервера.
 

Demiurg

Guest
Честно говоря, не думаю, что легче будет сделать то, что ты задумал. Ну вообщем мое мнение маленькое.
 
Сверху