Ruby执行命令注入(保护!)



我正在运行一个项目的制动器gem ..

它在抱怨一些正在运行的执行命令。当前代码:

Process.fork {exec "pdftk #{uncrypted_pdf_file} output #{pdf_file} owner_pw #{password} allow printing"}

Brakeman抱怨说有命令注入的可能性。我尝试了几种不同的调用exec的组合,例如:

Process.fork {exec "pdftk", uncrypted_pdf_file, " output #{pdf_file} ", "owner_pw #{password}", "allow printing"}

但是正如你所预料的,每个参数只是依次传递给pdftk,所以它失败了。

是否有一种方法可以一次调用命令并防止命令注入?在我们的特殊情况下,它是足够安全的,因为我们控制了所有的变量,但最好知道正确的方法。

您需要分别传递每个参数:

exec "pdftk", uncrypted_pdf_file, "output", pdf_file, "owner_pw", password, "allow", "printing"

您可能还需要提供pdftk的完整路径

相关内容

  • 没有找到相关文章

最新更新