我想允许用户在文本输入进行简单的计算,从而使输入2 * 5将导致10,我用一个空字符串代替一切,但数字,然后使用eval使计算()。 这似乎更容易和可能更快,然后手动解析它。
它经常被说的eval()是不安全的,所以我想听听有没有在这种情况下使用其任何危险或缺点。
function (input) {
value = input.value.replace(/[^-\d/*+.]/g, '');
input.value=eval(value);
}
我想允许用户在文本输入进行简单的计算,从而使输入2 * 5将导致10,我用一个空字符串代替一切,但数字,然后使用eval使计算()。 这似乎更容易和可能更快,然后手动解析它。
它经常被说的eval()是不安全的,所以我想听听有没有在这种情况下使用其任何危险或缺点。
function (input) {
value = input.value.replace(/[^-\d/*+.]/g, '');
input.value=eval(value);
}
这是安全的,不会因为你是消毒,而是因为它的所有用户,并进入了自己的浏览器中运行。 如果他们真的想进入恶意代码,他们可以通过使用Firebug或网页检查,甚至使用书签也无妨。 值得庆幸的是,有没有什么可以与除锁定了自己的浏览器的JavaScript恶意做:)
这一点,因为你正在做输入验证你把它变成EVAL之前是安全的。
此外,你也应该补充:
()%