繁体   English   中英

路径操纵解决方案?

[英]Path Manipulation Solution?

好的,因此,通常情况下,如果您的分析软件出现任何“ 路径操纵 ”问题,它们似乎实际上只是一种解决方案,不允许用户选择自己想要的路径。

我已经生成了这种简单的方法,可以对这些攻击进行一些验证。

private const string directory = "Windows";
private static readonly string[] extensions = {".pdf", ".txt"};

string userInput = @"..\windows\..\krnl386.exe";

        private static bool Validate(string filePath)
        {
            if (string.IsNullOrEmpty(filePath))
            {
                return false;
            }

            if (filePath.ToUpper().Contains(directory.ToUpper()))
            {
                return false;
            }

            string ext = Path.GetExtension(filePath);

            for (int x = 0; x < extensions.Length; x++)
            {
                if (ext.Equals(extensions[x]))
                {
                    return true;
                }
            }

            return false;
        }

现在,这两项检查是否有助于防止任何“ 路径操纵 ”? 您看到此方法有哪些漏洞 适用于此的应用程序将永远不需要访问Windows目录,也不需要使用.pdf.txt文件扩展名。

因此,无论大小写如何,都可以防止任何包含单词“ windows”的路径。 因此,将排除“ MyWindowsStuff”。 您可能还需要使扩展名不区分大小写。

您还需要在完整路径上工作,而不仅仅是相对路径。

这是否足够取决于您。 您是否认为有人可能会使用短文件名来访问受限目录? 例如,如果您要阻止人们进入“ Program Files”目录,则必须获取该目录的简称,并与之进行比较。 在我的系统上,“程序文件”为“ PROGRA〜1”,“程序文件(x86)”为“ PROGRA〜2”。

关于您对“ MyWindowsStuff”的评论很少见。 如果有人有一个名为“ windows.txt”的文件,该文件描述了他要放在自己家里的窗户,该怎么办? 还是“ Windows”目录,它是“文档”文件夹的子目录,他将要为客户端安装的Windows的报价汇总到一起? 您的“稀有案例”并不罕见。

您要阻止的唯一“ Windows”目录是Windows目录,甚至不必称为“ Windows”。 您可以通过调用Environment.GetFolderPath获得该目录的名称:

Environment.GetFolderPath( Environment.SpecialFolder.Windows )

任何其他名为“ Windows”或包含单词“ windows”的目录都不是Windows目录,也不应被阻止,路径名也不应在文件名中包含单词“ windows”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM