我的代码是否会阻止C#中的目录遍历?

时间:2013-06-11 13:18:45

标签: c# directory-traversal

请在下面找到我写的代码:

private void WriteLogs(Guid _guid)
{

string varpath = ConfigurationManager.AppSettings["LogFilePath"].ToString() + @"\ErrorLogs\Logs\";

string FileName = _guid.ToString() + ".txt";

string finalPath = System.IO.Path.GetFullPath(varpath + FileName);

if (Path.GetDirectoryName(finalPath) == Path.GetDirectoryName(varpath))
{
    if (!Directory.Exists(varpath))
    {
        Directory.CreateDirectory(varpath);
    }

    // Other code
}
}

请告诉我此代码是否会阻止Directory Traversal漏洞?

2 个答案:

答案 0 :(得分:0)

由于Guid是传入的唯一内容,并且Guid不能是..\..\形式,我认为您可以安全地使用Directory Traversal Attack。< / p>

唯一的其他输入是ConfigurationManager.AppSettings["LogFilePath"]。这可以是X:\Example\..的形式,但它也可以是X:\,所以我不认为这是一个问题。无论哪种方式,您都会将@"\ErrorLogs\Logs\"添加到您正在编写的路径中。

我还建议您使用Path.Combine,这样您就不必迷失\

string varpath = Path.Combine(ConfigurationManager.AppSettings["LogFilePath"]
                     .ToString(), @"ErrorLogs\Logs");

答案 1 :(得分:0)

这对我有用:

<FlatList products={products}
相关问题