gpt4 book ai didi

ruby - Ruby SecurityError 'Insecure operation: -r (SecurityError)' 是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-03 16:03:06 27 4
gpt4 key购买 nike

执行

ruby -e 'Thread.new {$SAFE=3; File.read "/tmp/foo"}.join'

结果

-e:1:in `read': Insecure operation: -r (SecurityError)
from -e:1:in `block in <main>'

为什么? -r 表示什么?谷歌搜索我只找到this旧的 Redmine 问题,这似乎表明它已“修复”。将 File.read 替换为 load 或类似的“不安全”操作没有区别

最佳答案

-r 表示读取

安全级别 3 意味着不允许外部资源 - 程序不允许从将 $SAFE 设置为 3 后创建的对象中读取任何数据。这意味着你不能这样做

 Thread.new {$SAFE=3; File.read "/tmp/foo"}.join

但你可以这样做:

Thread.new {file = File.open "/tmp/foo"; $SAFE=3; file.read}.join

同样,从 STDIN 中读取也不会有任何问题,因为它已在前面声明过。级别 4 禁止使用任何 IO 对象。更多详情:http://ruby.about.com/od/qa/ss/What-Are-Taint-And-Trust.htm

关于ruby - Ruby SecurityError 'Insecure operation: -r (SecurityError)' 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20356319/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com