我試圖處理在Ruby中加載無效YAML數據,但似乎無法營救被迷幻引發的異常。無法施救YAML.load例外
這是一些示例代碼,以證明我遇到的問題:
require 'yaml'
begin
YAML.load('&*%^*')
rescue
puts "Rescued"
end
和異常:
# ruby test.rb
/usr/lib64/ruby/1.9.1/psych.rb:203:in `parse': (<unknown>): did not find expected alphabetic or numeric character while scanning an anchor at line 1 column 1 (Psych::SyntaxError)
from /usr/lib64/ruby/1.9.1/psych.rb:203:in `parse_stream'
from /usr/lib64/ruby/1.9.1/psych.rb:151:in `parse'
from /usr/lib64/ruby/1.9.1/psych.rb:127:in `load'
from test.rb:3:in `<main>'
在一個側面說明,我建議你不要使用'YAML.load'與任何用戶預期的數據,鑑於最近的所有軌道YAML和JSON相關的漏洞,允許惡意用戶執行遠程執行漏洞。 –
您是否爲此問題獲得任何解決方案?除了捕捉異常。 – shajin
@shajin我在接受的解決方案中,'rescue SyntaxError'中做了什麼,而不是所有的'Exception'。不是最好的,但比拯救一切更好。 – Patrick