1

我正在制作一个上传网站。我想将图像从我的项目上传到 out 文件夹。

这是我的项目的链接:

D:/repo/abc/abc.WebUI.Back

我想上传图片到:

D:/repo/abc/abc.WebUI.POS/images/abc-promo

我尝试使用这个:

string filePath = "";
            string fileName = null;
            var path = @"~\..\repo\abc\abc.WebUI.POS\images\abc-promo\";
            if (vm.file != null && vm.file.ContentLength > 0)
            {
                filePath = Path.Combine(Server.MapPath(path),
                           Path.GetFileName(vm.file.FileName));
                fileName = vm.file.FileName;
                vm.file.SaveAs(filePath);
            }

我有一个错误。

Cannot use a leading .. to exit above the top directory.

任何想法如何解决这个问题?

4

1 回答 1

1

当你把“..”放在

var path = @"~\..\repo\abc\abc.WebUI.POS\images\abc-promo\";

它可以用来向上逃逸目录,这种类型的操作被认为是一个安全漏洞。谷歌“双点攻击”,你就会知道为什么。而不是您分配的路径变量,请使用以下内容。

Server.MapPath("~/images/abc-promo/")

并确保您没有像在代码块中那样开始将目录映射到您的 web 文件夹之外,如“repo\abc\abc.WebUI.POS”。当你放一个“~”(标题)时,它的意思是“从网络应用程序的根文件夹开始)。希望这能解决你的问题。

于 2013-09-12T10:32:26.040 回答