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 注入的原因相同:在这种情况下,您不应该这样做以避免代码注入。ii

于 2012-04-19T21:27:43.823 回答