Хранение PHP в базе данных само по себе является неприятным запахом дизайна; даже если в этом случае вы почти уверены, что он никогда не будет содержать небезопасный код, всегда полезно минимизировать количество предположений или защитных мер, которые вы должны сделать. Если вы храните код PHP в базе данных, то атака, при которой злоумышленник получает доступ к вашей базе данных, быстро становится намного более серьезной, превращаясь в атаку, в которой злоумышленник может выполнить произвольный код! Я знаю, что подобная компрометация вашей базы данных крайне маловероятна, но, тем не менее, это хорошая практика безопасности, которая не позволяет даже маловероятной ситуации скомпрометировать вашу систему больше, чем нужно.
Многие люди соглашаются , что eval () следует всегда без исключения избегать в коде PHP. Всегда есть альтернатива.
В этом случае, однако, я думаю, что я должен сказать, что использование eval () будет лучшим решением для вас, потому что вы уже храните PHP-код в БД, поэтому использование eval () не собирается увеличить свой риск дальше, чем это.
Я бы, однако, рекомендовал
- Вы пытаетесь проверить код перед тем, как его выполнять (eval ()), проявляя осторожность в том, что разрешаете. Предположим, что злоумышленник каким-то образом проник в вашу базу данных, даже подумав, что это маловероятно.
- По крайней мере, вы серьезно задумываетесь о переписывании приложения, чтобы код PHP не сохранялся в базе данных. Если вы храните сложные структуры данных, подумайте о чем-то вроде JSON или даже XML. Для них существуют безопасные парсеры.
Извините, если этот ответ кажется немного реакционным; Мне просто кажется, что такие вещи очень важны.