Использует javascript eval() безопасно для простых вычислений в входах?

Я хотел бы разрешить пользователю выполнять простые вычисления в текстовых вводах, так что ввод 2 * 5 приведет к 10. Я заменяю все, кроме цифр пустой строкой, а затем делаю вычисления с помощью eval(). Это кажется более простым и, вероятно, быстрее, чем его вручную.

Часто говорят, что eval() является небезопасным, поэтому я хотел бы услышать, есть ли какая-либо опасность или недостаток его использования в этой ситуации.

function (input) {
  value = input.value.replace(/[^-\d/*+.]/g, '');
  input.value=eval(value);
}

Ответ 1

Это безопасно не потому, что вы его дезинфицируете, а потому, что все это вводится пользователем и запускается в их собственном браузере. Если они действительно хотели ввести вредоносный код, они могли бы это сделать в любом случае, используя firebug или веб-инспектор или даже с помощью букмарклета. К счастью, вы не можете злонамеренно здороваться с javascript, кроме блокировки своего браузера:)

Ответ 2

это безопасно, потому что вы выполняете проверку ввода перед тем, как поместить его в eval.

Кроме того, вы должны добавить:

()%