允许用户在不使用eval的情况下组合表

时间:2012-04-19 21:06:21

标签: ruby ruby-on-rails-3 eval

在我的应用程序中,我需要允许用户进行计算,例如从不同表中的行添加/减去/除值。有没有比使用eval()更安全的方法呢?将字符串作为输入并编写自己的函数来解析字符串以进行计算是否更好?

2 个答案:

答案 0 :(得分:2)

只过滤掉非数字和非操作数

var1 = "4+4;haha i'm a nasty command"
var1.gsub!(/[^\d|\+-\/\*]/,"")
p eval(var1) => 8

答案 1 :(得分:0)

是。与为什么不应该直接使用SQL查询的用户输入以避免sql注入的原因相同:在这种情况下,您不应该这样做以避免代码注入.ii