我们正在开发一种对Tropo有类似要求的产品(参见https://github.com/tropo/tropo-samples/tree/master/ruby),允许用户编写一个可以访问传入的一些函数和变量的ruby脚本。但是,我们希望避免用户访问全局调用,删除所有用户或终止程序。有没有办法用eval完成这个?
答案 0 :(得分:3)
这在很大程度上取决于你如何实现它,但是研究使用与eval的绑定。通过创建自己的绑定并使用“安全”对象预加载它,您可以限制用户可以对其代码执行的操作。
答案 1 :(得分:0)
设置$ SAFE参数?这应该确保你不会评估不受信任的字符串,无论如何......
答案 2 :(得分:0)
Ruby提供了一个基于“受污染”对象的安全模型。
你可能想要check that。无论如何注意,创建DSL比eval更安全(更有趣!)