我想将一些用户提供的参数传递给应用程序(在Windows上使用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&unix背景,不确定在通过processstartinfo调用应用程序时,这是否是一个有效的问题,但似乎谨慎的做法是偏执并要求更明智的委员会。