Как проверить безопасность пользовательского кода перед выполнением в eval?
Необходимо предоставить пользователям онлайн сервиса возможность составлять формулы (допускаются арифметические и логические операции, ветвление, переменные).
Для решения задачи предполагаю запускать пользовательский код через eval, предварительно проверив на наличие запрещенных функций и выражений. Написали следующую регулярку для поиска в коде запрещенных конструкций:
'/[^$\w]([a-zA-Z][\w_]+)|(\$this)/i'
Достаточно ли такой проверки для безопасности запуска пользовательского кода? Может есть более удачные решения задачи?
Вариант, конечно, имеет место быть. Так проще, но менее правильно. Правильно написать парсер синтаксиса ваших формул, у вас он должен быть примитивным, судя по условиям задачи.