我正在运行一个项目的制动器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
的完整路径