Вы должны изменить свой путь.
С eval
вы должны присваивать белый список всем операторам и дезинфицировать оба входа.
Создайте свой собственный интерфейс для своих нужд.
Может быть, это будет switch
:
switch (operator) {
case '>': if (x > y) doSomething();
}
Может быть еще немного абстрагироваться, как:
ifArg(x).relatedWith(y).as(operator).then(doSomething);
Может быть, даже вы будете писать свой собственный небольшой интерпретатор (анализатор/лексический анализатор) и ваши пользователи будут может написать на нем программу.
Он будет использоваться в веб-приложении, где пользователи могут создавать собственные небольшие (простые) приложения для использования данных. - Mathieu Brouwers
Что вы не должны использовать здесь: eval
.
вы можете использовать eval(), но это будет зло для пользовательских входов. – Raman