为什么在这种情况下使用 Shikashi Gem会出现安全错误“无法访问常量哈希” ?
include Shikashi
privileges = Privileges.new
privileges.instances_of(Hash).allow_all
Sandbox.new.run(privileges, "arguments=Hash.new;")
有什么见解吗?我需要在沙盒中运行一些 ruby 代码,看看它是否表现良好。
为什么在这种情况下使用 Shikashi Gem会出现安全错误“无法访问常量哈希” ?
include Shikashi
privileges = Privileges.new
privileges.instances_of(Hash).allow_all
Sandbox.new.run(privileges, "arguments=Hash.new;")
有什么见解吗?我需要在沙盒中运行一些 ruby 代码,看看它是否表现良好。
您需要允许脚本读取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;")