1

私のアプリケーションはProcess.Start、実行する別のアプリケーションを開くために使用しています。VeraCode [セキュリティ ソフトウェア スキャン ツール] は、このコマンドをOS Command Injection Vulnerableとして報告しました。何かコメントを頂きたいです。入力のフィルタリングまたはプログラム名の制約に関する多くの情報を Web で見つけました。Process.Startただし、 ?を使用する他の方法があるかどうかを知りたいです。

編集: コメントありがとうございます。これはサンプルの 1 つです。はい、ユーザーからの入力を取得しています。

public static void Run(string fileName, string arguments, bool waitForExit)
{
    Process p = Process.Start(fileName, arguments);

    if (waitForExit)
        p.WaitForExit();
}

ありがとう!

4

3 に答える 3

1

Processクラスは、マネージド ラッパー クラスであるネイティブCreate Processとそのバリエーション ( Create Process As Userなど) に他なりません。

他のすべてのソリューションも WinAPI 関数を呼び出すため、これ以外にプロセスを開始する方法はないと思います。(この関数 (またはそのオーバーロードとバリエーション) が Windows でプロセスを開始する唯一の方法であるため)。

個人的には、問題について何も聞いたことがありません。問題Process.Startを明確にしてください

よろしく

于 2014-10-23T20:28:51.720 に答える