Безопасные запросы к файлам .html в ASP.NET Core - PullRequest
0 голосов
/ 14 марта 2019

У меня есть веб-приложение, написанное на ASP.NET Core.Аутентификация выполняется путем проверки, содержит ли Session объект Json, полученный из веб-службы по первому запросу.(с использованием открытых / закрытых ключей и т. д.)

Внутри этого объекта Json находится число, соответствующее физической папке под корневой папкой в ​​Интернете.

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

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

Кто-нибудь знает, как это сделать?

1 Ответ

0 голосов
/ 14 марта 2019

Единственный реальный способ - это прокси-файлы HTML через действие, которое разрешено . Например. Вместо прямой ссылки на foo.html вам нужно что-то вроде /proxy?file=foo.html, где /proxy будет действием, которое проверяет, действительно ли пользователь имеет право на просмотр foo.html или нет.

Аналогичный подход изложен в документах :

Промежуточное программное обеспечение статических файлов не обеспечивает проверки авторизации. Любые файлы, обслуживаемые им, в том числе под wwwroot, являются общедоступными. Для обслуживания файлов на основе авторизации:

  • Храните их вне wwwroot и любого каталога, доступного для промежуточного программного обеспечения статических файлов.

  • Служите им с помощью метода действия, к которому применяется авторизация. Вернуть объект FileResult:

public IActionResult BannerImage()
{
    var file = Path.Combine(Directory.GetCurrentDirectory(), 
                            "MyStaticFiles", "images", "banner1.svg");

    return PhysicalFile(file, "image/svg+xml");
}
...