c# - 操作系统命令注入(inject)

标签 c# windows winforms

OS Command Injection适用于 winform 应用程序?

它是主要的安全威胁吗?

如果是,那么保护应用程序免受攻击的最佳可行解决方案是什么?

上述任何链接将不胜感激。

这是示例代码

public static void RunNewInstance(ref string pstrUserRole)
        {
            Assembly asm = Assembly.GetExecutingAssembly();
            string lstrExeName = asm.ManifestModule.Name;
            Process proc = new Process();
            string lstrCurrentDirectory = Environment.CurrentDirectory;
            proc.StartInfo.FileName = lstrCurrentDirectory + "\\" + strExeName;

            proc.StartInfo.Arguments = pstrUserRole;
            proc.Start();
        }

最佳答案

如果您的 winforms 应用程序允许用户输入以执行他们原本无法执行的任意系统命令,那么它很容易受到攻击。解决办法是不允许。不要运行 shell 命令,而是明确允许用户做什么。不允许用户做任意事情。

这是一个 super 笼统的答案,但您没有提供有关您的应用程序的具体信息,因此无法知道什么是最适合您的决定。

不过我的猜测是,因为这是一个 winforms 应用程序,所以该应用程序可能与交互式用户具有相同的权限。在这种情况下,您的应用可以通过打开命令提示符来完成它们无法完成的任何事情。

也许您应该提供有关您的应用的更多详细信息,以及您为什么害怕这个特定漏洞。

关于c# - 操作系统命令注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14957394/

相关文章:

c# - 将 DataTable 转换为 XML 的防更改且最快的方法?

c# - 如何从 gridview 中的 TimeSelector 检索时间?

c# - 为什么这段代码不会死锁?

c# - 阻止 Windows 窗体设计器设置属性的属性是什么

c# - 如何修复 Visual Studio 警告

c# - 为什么 C# TcpListener 需要 IP 地址

c# - .NET 中的 "start/affinity"等价物

json - 什么是 (ERR! code ENOLOCAL npm ERR!) Could not install because of an error?

c++ - boost::program_options - 它是否对命令行选项进行精确的字符串匹配?

C# 窗体 : Control locked but locked propety is set to false