2012-03-23 9 views
1

私はPHPでシステムを呼び出すためにこれらのvarをフィルタリングし、シェルスクリプトを実行する必要があります。どのfilter_var SANITIZEマクロを削除する必要がありますか?シェル実行時の問題不要な文字のように.etc.etcPHPのシステムでシェルスクリプトを呼び出すためのフィルタvar

これは私のコードのテストの例です、今私はテストのためのvarをハードコードしました..ありがとう!

答えて

0

escapeshellarg()です。

escapeshellarg()は文字列の前後に一重引用符を追加し、既存の一重引用符を引用/エスケープして文字列をシェル関数に直接渡し、単一の安全な引数として扱わせます。この関数を使用して、個々の引数をユーザ入力からくるシェル関数にエスケープする必要があります。シェル関数には、exec()、system()およびバックティック演算子が含まれます。
1

http://php.net/manual/en/function.escapeshellarg.php

これを通して、あなたのコマンドラインパラメータを渡し、あなたは安全だ;)また、私はあなたが(execを使用してお勧めします)の代わりにシステムの()あるいはもしくはshell_exec()あなたのことができるようになりますので、スクリプトからの戻り値だけでなく、使用したいテキスト出力を取得します。

+0

私は私のGET VARS上にescapeshellarg使用して、私のようなシェルコマンドを入れた場合、エコーCIAO。シェルはエコーを実行します!それは十分ではない、私は他のチェック...任意の提案が必要ですか? – andrea

+0

それからいとこをチェックしてください。http://php.net/manual/en/function.escapeshellcmd.phpこのコマンドライン全体をコマンドラインに渡します;)お返事ありがとう – smassey

+0

! – andrea

1

これが他のユーザーによってトリガーされる可能性がある場合は、この方法を使用しません。

非常に危険です。特に、複数のパラメータとサニタイズルールがあります。

0

これを可能にする組み込みのサニタイズフィルタはありません。しかし、あなたはFILTER_CALLBACKと、このようなescapeshellargとそれ偽物次のことができます。

$var = filter_var($input, FILTER_CALLBACK, array('options' => 'escapeshellarg')); 
関連する問題