2017-07-12 4 views
2

私はドッカーコンテナについて何かをチェックするスクリプトを書いています。どのコンテナであるかはユーザの入力に依存する。シェルでdocker inspect $nameを呼び出した結果を取得するにはどのように私はコードインジェクションを防ぐのですか?

(define pipes (process (string-append "docker inspect " name))) 

:だから私は、このようなコードを持っています。これをコードインジェクションから守るにはどうすればいいですか?誰かがsomeName ; sudo rm -rf/--no-preserve-rootと入力しても結果はいいとは言えません。それはdocker inspect "$name"または単一引用符の間にそれを置くが、両方のケースでは、誰かが代わりにsomeName"またはsomeName'を入力することができ、問題が帰ってきたの効果を持つように私はそれを作ることができます。

+1

私はあなたが[ 'プロセス*'](http://docs.racket-lang.org/reference/subprocess.html#%28def._%28%28lib._racket%2Fsystemを使用したいと思います。別の引数としてコマンドの名前とその引数を取る.rkt%29._process%2A%29%29)。何か '(プロセス*"ドッカー ""インスペクト "名前)'のようなもの? – chepner

+0

それはので、私は明日までそれをテストしませんが、これは確かに(私はそれだけで糖衣構文であれば、それは、それは奇妙なことだろうと期待)問題を修正した場合、これは受け入れ答えだろう、ここで少し遅くなってきた@chepnerクール – Wysaard

+0

は、私は(PLTスキームからラケットの名前変更はまだ私は任意のスキームを書いた最後の時間、将来の年であった)、それを自分自身をテストするための任意の便利な方法を持っていませんでした。私はそれを受け入れることができるように私のテストから – chepner

答えて

3

は、プログラムを実行するためにシェルをバイパスして、コマンド名とその引数のために別々の引数を取りprocess*機能を使用します。

(process* "docker" "inspect" name) 
関連する問題