1

私のアプリでは、ユーザーがさまざまなテーブルの行から値を加算/減算/除算するなどの計算を行えるようにする必要があります。eval() を使用するより安全な方法はありますか? 入力として文字列を取得し、独自の関数を記述して文字列を解析して計算を行う方がよいでしょうか?

4

2 に答える 2

2

非数字と非オペランドを除外するだけです

var1 = "4+4;haha i'm a nasty command"
var1.gsub!(/[^\d|\+-\/\*]/,"")
p eval(var1) => 8
于 2012-04-19T22:26:32.457 に答える
0

はい。SQL インジェクションを回避するために、SQL クエリにユーザー入力を直接使用してはならない理由と同じ理由: この場合、コード インジェクションを回避するために使用しないでください。

于 2012-04-19T21:27:43.823 に答える