12

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

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

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

2 回答 2

11

那是安全的,不是因为你在清理它,而是因为它都是由用户输入并在他们自己的浏览器中运行的。如果他们真的想输入恶意代码,他们无论如何都可以通过使用 firebug 或 web 检查器,甚至使用小书签来完成。值得庆幸的是,除了锁定自己的浏览器之外,您无法对 javascript 进行恶意操作 :)

于 2012-12-24T11:39:28.453 回答
1

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

除此之外,您还应该添加:

()%

于 2012-12-24T11:35:16.013 回答