我希望能够在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调用应用程序时是否存在此有效问题,但似乎谨慎一点并请求更明智的意见是明智的。