У меня есть следующий код в моем MVC
приложении для загрузки App_Data
файлов, сгенерированных сервером.
public ActionResult DownloadFile(string fileName, string dummyName)
{
var path = this.HttpContext.Server.MapPath("~/App_Data/TempFiles");
var filePath = Path.Combine(path, fileName);
var fileExtension = Path.GetExtension(filePath);
byte[] fileBytes = System.IO.File.ReadAllBytes(filePath);
var cookie = new System.Web.HttpCookie("fileDownload", "true")
{
Expires = DateTime.Now.AddDays(1),
Path = "/"
};
this.Response.Cookies.Add(cookie);
return File(fileBytes, "application/octet-stream", fileName);
}
Кажется, все нормально без проблем, но затем, глядя на уязвимости безопасности, я мог бы использовать post manчтобы отправить что-то вроде этого:
http://localhost/testapp/employee/downloadfile/?filename=netspi- notafile.xxx../../../../web.config&dummyName=netspi-notafile.xxx
И сюрприз .. Я могу получить обратно содержимое web.config
.
Любая подсказка о том, как защитить это или предотвратить это.?