alexon
Новичок
Проверка исполяемого кода в eval
Привет.
Ситуация такая. Необходимо выполнить код через функцию eval. Хочется чтобы в этой строке выполнялись только операции строковые и математические, ну, возможно еще некоторые. Строка формируется пользователями, поэтому большая вероятность, что кто-нибудь обязательно вставит туда другие функции, например system, file_put_contents и прочие нежелательные. В строке одновременно может быть несколько разных функций в произвольном порядке, например формула.
Вопрос в следующем. Как ограничить, точнее, сделать проверку и при нахождении опасного кода запретить выполнение выражения.
Наиболее реальным решением проблемы вижу такой вариант. Прописать все "вредные" функции в массив и проверять регулярным выражением. Только список функций довольно большой и просто упустить из виду некоторые из них. Может быть, у кого-то есть такой список функций? Проблема такого метода еще, по-моему, в том, что такая защита не сработает, если в PHP добавятся новые функции, которых нет в списке - придется постоянно отслеживать изменения в версиях.
Или есть другие мнения и решения на этот счет?
С уважением, Александр.
Привет.
Ситуация такая. Необходимо выполнить код через функцию eval. Хочется чтобы в этой строке выполнялись только операции строковые и математические, ну, возможно еще некоторые. Строка формируется пользователями, поэтому большая вероятность, что кто-нибудь обязательно вставит туда другие функции, например system, file_put_contents и прочие нежелательные. В строке одновременно может быть несколько разных функций в произвольном порядке, например формула.
Вопрос в следующем. Как ограничить, точнее, сделать проверку и при нахождении опасного кода запретить выполнение выражения.
Наиболее реальным решением проблемы вижу такой вариант. Прописать все "вредные" функции в массив и проверять регулярным выражением. Только список функций довольно большой и просто упустить из виду некоторые из них. Может быть, у кого-то есть такой список функций? Проблема такого метода еще, по-моему, в том, что такая защита не сработает, если в PHP добавятся новые функции, которых нет в списке - придется постоянно отслеживать изменения в версиях.
Или есть другие мнения и решения на этот счет?
С уважением, Александр.