我想將一些用戶提供的參數傳遞給應用程序(在Windows上使用C#)。在C#中命令行安全地轉義參數
的參數是一個NameValueCollection中,我希望使用所提供的參數將它們作爲一個字符串傳遞,這樣應用程序可以被調用,調用使用的ProcessStartInfo:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.UseShellExecute = true;
startInfo.FileName = executableName;
startInfo.Arguments = arguments;
startInfo.Verb = "runas";
Process p = Process.Start(startInfo);
那部分是有據可查的,非常簡單。但是,由於在我的場景(用戶提供;可能通過一個非常容易惡意製作的URL)中構造這些參數的性質,我希望確保它們能夠正確轉義(例如,沒有人能夠注入轉義字符或會導致另一個應用程序被調用或執行其他操作的引用)。
我希望確保從參數名稱或值中的字符不會有命令注入的風險。我不清楚我是否應該試圖逃避任何角色,並且/或者是否存在現有的功能。
我主要來自Mac的背景,我不確定在通過ProcessStartInfo調用應用程序時,這是否甚至是一個有效的擔憂,但似乎謹慎是偏執狂,並要求更聰明的理事會。
我希望得到稍微更具體的確認,但確實如此,謝謝你的回覆! – 2010-10-26 14:24:46