使用javascript eval()对输入中的简单计算是否安全?

时间:2012-12-24 11:29:15

标签: javascript eval

我想允许用户在文本输入中执行简单的计算,因此键入2 * 5将导致10.我将使用空字符串替换除数字之外的所有内容,然后使用eval()进行计算。这似乎更容易,并且可能比手动解析它更快。

经常有人说eval()是不安全的,所以我想听听在这种情况下使用它是否有任何危险或缺点。

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

2 个答案:

答案 0 :(得分:7)

这是安全的,不是因为你正在消毒它,而是因为它全部由用户输入并在他们自己的浏览器中运行。如果他们真的想输入恶意代码,他们无论如何都可以通过使用firebug或web检查器,甚至使用bookmarklet来实现。值得庆幸的是,除了锁定您自己的浏览器之外,您无法使用javascript进行恶意攻击:)

答案 1 :(得分:1)

这是安全的,因为在将其放入eval之前,您正在进行输入验证。

除此之外你还应该添加:

()%