2

为什么在这种情况下使用 Shikashi Gem会出现安全错误“无法访问常量哈希” ?

include Shikashi

privileges = Privileges.new
privileges.instances_of(Hash).allow_all
Sandbox.new.run(privileges, "arguments=Hash.new;")

有什么见解吗?我需要在沙盒中运行一些 ruby​​ 代码,看看它是否表现良好。

4

1 回答 1

2

您需要允许脚本读取Hash常量。您还需要允许在对象上调用该new方法Hash

include Shikashi

privileges = Privileges.new
privileges.allow_const_read "Hash"
privileges.object(Hash).allow :new
privileges.instances_of(Hash).allow_all
Sandbox.new.run(privileges, "arguments=Hash.new;")
于 2013-04-25T19:47:46.473 回答