使用javascript eval()在输入中进行简单计算是安全的吗?

Is using javascript eval() safe for simple calculations in inputs?

本文关键字:计算 简单 安全 eval javascript 输入 使用      更新时间:2023-09-26

我希望允许用户在文本输入中执行简单的计算,这样输入2*5将得到10。我用空字符串替换除数字外的所有内容,然后使用eval()进行计算。这似乎比手动解析更容易,也可能更快。

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

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

这是安全的,不是因为您对它进行了消毒,而是因为它都是由用户输入并在他们自己的浏览器中运行的。如果他们真的想输入恶意代码,他们可以使用firebug或web inspector,甚至使用bookmarklet。值得庆幸的是,除了锁住你自己的浏览器,你可以用javascript恶意做的事情并不多:)

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

除此之外,你还应该加上:

() %