Безопасно ли сопоставлять виртуальный каталог с подпапкой в ​​App_Data для обслуживания изображений? - PullRequest
2 голосов
/ 18 июля 2011

Я запускаю приложение mvc3 под IIS7.

широкая публика может загружать изображения через элемент управления загрузкой файлов, который изменяет размеры изображений, а затем записывает их в подпапку папки App_Data.

Когда дело доходит до отображения загруженных изображений на страницах, я не могу использовать их прямо из подпапки App_Data, потому что это ограничено IIS7 как защищенная папка по соображениям безопасности.

Если я сопоставляювиртуальный каталог в подпапке App_Data, я могу обслуживать изображения, хранящиеся там, но это поднимает вопрос - представляет ли это угрозу безопасности?

Насколько я понимаю, до тех пор, пока на виртуальном компьютере установлены правильные разрешениякаталог, то все должно быть в порядке.

Это правильно?или есть другие вещи, которые я пропускаю?

1 Ответ

3 голосов
/ 18 июля 2011

Из того, что я понимаю, если на виртуальном каталоге установлены правильные разрешения, то все должно быть в порядке.

Это верно. Если вы гарантируете, что только авторизованные пользователи могут получить доступ к этому виртуальному каталогу, ваши файлы будут в безопасности.

Но чтобы избежать всех хлопот по созданию другого виртуального каталога, вы можете создать действие контроллера, которое будет напрямую обслуживать файлы из этой папки:

// You could specify Roles instead of Users if you wish
[Authorize(Users = "john, jane")] 
public ActionResult AppDataFile(string filename)
{
    var file = Path.Combine(Server.MapPath("~/app_data"), filename);
    if (!System.IO.File.Exists(file))
    {
        return HttpNotFound();
    }
    return File(file, "application/octet-stream", Path.GetFileName(file));
}

и затем, когда вы аутентифицируетесь как jane, вы можете /appdatafile?filename=foo.bar загрузить файл foo.bar из папки App_Data.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...