删除rails中的命令注入



所以我有一个使用ImageMagick的助手,它里面有一个方法,在命令行上强制zbar从图像中提取QR数据。图像源必须是参数化的。

qr_code_data = %x(zbarimg -q #{src})
显然,

brakeman在这里给了我一个command injection警告。只使用backticks会给出相同的警告,虽然system会产生所需的结果,但它返回的是true而不是输出。我不想使用qr解码包装器/gem或Open3。我需要知道我可以消毒我的图像源作为一个参数,以避免命令注入,除了使用我提到的两个选项。

ImageMagick一般支持使用STDIN作为输入。IO。Popen支持用文件的内容替换子进程的stdin。试试以下命令:

qr_code_data = ""
IO.popen(['zbarimg','-q','png:-'], :in=>[src]) do |pipe|
  qr_code_data = pipe.read
end

将上面的png替换为您的实际图像格式或完全删除png:,以允许ImageMagick从输入的幻数中确定文件类型

相关内容

  • 没有找到相关文章

最新更新