bubblegum
Новичок
Есть ли уязвимость в таком использовании eval()
Вывожу данные на сайт из базы через простой шаблонизатор, и в нем мне понадобилось использовать пхп функции для обработки значений (в основном - для строк: nl2br, преобразование даты и тп), функция обработки хранится в шаблоне. Ничего другого как использовать eval() при обработке шаблона не придумал. Хочу попросить общественность позырить, может ли мой способ привести к уязвимости сайта; сам я опасностей не заметил.
Подробнее:
Рисуется форма, описание полей для нее берется из бд
После сабмита данные сохраняются в одном поле таблицы в хмл
При выводе для данного типа формы берется шаблон, функции пхп в нем помечены специальными тегами
для вывода допустим descr в шаблоне примерно такая строка: {?descr}<p>{??descr}nl2br({descr}){??descr}</p>{?descr}
где {?descr} - проверка на наличие значения в descr, {??descr} - обрамляют пхп код, {desccr} - собственно значение.
Понимаю: велосипед, но это мой велосипед и я его ездю ))
Итак, далее: получаю значение descr, заслешиваю кавычки и кладу внутрь пхп функции полученной из шаблона, потом делаю eval("$s=..")
на примере: в форму ввели 'echo "hi"; ''; insert into users(); system(..);' , после обработки получили
строку: $s0='$s=snl2br("echo \"hi\"; ''; insert into users(); system(..);");' -> eval($s0), ну и $s выводится на сайте в своих тегах
в приведенном примере могут быть ошибки, я его набросал по памяти, основная мысль: eval ($s=ф-я_пхп_возвращающая_строку(заслешенное_значение_из_бд))
я вроде бы не нашел опасности, но вдруг !? )
Вывожу данные на сайт из базы через простой шаблонизатор, и в нем мне понадобилось использовать пхп функции для обработки значений (в основном - для строк: nl2br, преобразование даты и тп), функция обработки хранится в шаблоне. Ничего другого как использовать eval() при обработке шаблона не придумал. Хочу попросить общественность позырить, может ли мой способ привести к уязвимости сайта; сам я опасностей не заметил.
Подробнее:
Рисуется форма, описание полей для нее берется из бд
После сабмита данные сохраняются в одном поле таблицы в хмл
При выводе для данного типа формы берется шаблон, функции пхп в нем помечены специальными тегами
для вывода допустим descr в шаблоне примерно такая строка: {?descr}<p>{??descr}nl2br({descr}){??descr}</p>{?descr}
где {?descr} - проверка на наличие значения в descr, {??descr} - обрамляют пхп код, {desccr} - собственно значение.
Понимаю: велосипед, но это мой велосипед и я его ездю ))
Итак, далее: получаю значение descr, заслешиваю кавычки и кладу внутрь пхп функции полученной из шаблона, потом делаю eval("$s=..")
на примере: в форму ввели 'echo "hi"; ''; insert into users(); system(..);' , после обработки получили
строку: $s0='$s=snl2br("echo \"hi\"; ''; insert into users(); system(..);");' -> eval($s0), ну и $s выводится на сайте в своих тегах
в приведенном примере могут быть ошибки, я его набросал по памяти, основная мысль: eval ($s=ф-я_пхп_возвращающая_строку(заслешенное_значение_из_бд))
я вроде бы не нашел опасности, но вдруг !? )