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 に答える