Ruby on rails 在Ruby中运行eval有安全的方法吗?
我们正在开发一个与Tropo(请参阅)有类似需求的产品,在该产品中,用户可以编写一个ruby脚本,该脚本可以访问传入的一些函数和变量。但是,我们希望避免用户访问全局呼叫删除所有用户或终止程序。有没有一种方法可以通过eval实现这一点?这在很大程度上取决于您如何实现它,但是请研究如何使用eval绑定。通过创建自己的绑定并使用“安全”对象预加载,可以限制用户对其代码的操作Ruby on rails 在Ruby中运行eval有安全的方法吗?,ruby-on-rails,ruby,sandbox,Ruby On Rails,Ruby,Sandbox,我们正在开发一个与Tropo(请参阅)有类似需求的产品,在该产品中,用户可以编写一个ruby脚本,该脚本可以访问传入的一些函数和变量。但是,我们希望避免用户访问全局呼叫删除所有用户或终止程序。有没有一种方法可以通过eval实现这一点?这在很大程度上取决于您如何实现它,但是请研究如何使用eval绑定。通过创建自己的绑定并使用“安全”对象预加载,可以限制用户对其代码的操作 设置$SAFE参数?这应该确保您不会评估不受信任的字符串,无论如何…Ruby提供了一个基于“受污染”对象的安全模型 你可能想。无
设置$SAFE参数?这应该确保您不会评估不受信任的字符串,无论如何…Ruby提供了一个基于“受污染”对象的安全模型
你可能想。无论如何,请注意,创建DSL比eval更安全(也更有趣!)您应该覆盖eval并只将可信命令可能的副本传递给: