0

プロジェクトで Brakeman gem を実行しています。実行中のいくつかの exec コマンドについて不平を言っています。

現在のコード:

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 に渡されるため、失敗します。

ワンショットでコマンドを呼び出し、コマンド インジェクションから保護する方法はありますか。私たちの特定のケースでは、すべての変数を制御するのでとにかく安全ですが、正しい方法を知っておくとよいでしょう。

4

1 に答える 1

2

各引数を個別に渡す必要があります。

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

へのフル パスも指定する必要がある場合がありpdftkます。

于 2014-07-31T05:19:46.877 に答える