Как защитить доступ к каталогам / папкам веб-приложений?

В веб-приложении легко разместить логику при программном доступе к представлениям, но как вы удерживаете пользователя от перехода на саму страницу jsp?

пример

@RequestMapping("/SomeView")
public void goToSomeView{

 if(logicIsNotSatisfied)
    return new ModelAndView("failure"):
 else
    return new ModelAndView("welcome");
}

Достаточно просто

Но как не дать пользователю набрать в веб-браузере прямой путь к ресурсу, например:

http://mydomain/myWebApp/resouces/stuff.png

Вопрос:

Как мы накладываем ограничения на возможность пользователям получать прямой доступ к каталогам веб-приложения?

2 ответа

Решение

Поместите JSP под WEB-INF, и они не будут доступны снаружи. Обратите внимание, что прямой доступ к ним не должен быть большой проблемой, потому что все пользователи получат сообщение об ошибке или пустую страницу, учитывая, что все данные, к которым обращается представление, будут недоступны, так как контроллер не был вызывается.

Что касается статических ресурсов, если вы не хотите, чтобы пользователи могли получать к ним доступ без контроля доступа, то также поместите их в WEB-INF или вне каталогов веб-приложений и получите доступ к ним через контроллер, который проверяет, что пользователь может доступ к ним, читает их и записывает их в ответ.

Я хотел бы дать несколько советов. Не думайте о JSP как о странице, на которую переходят пользователи. JSP не является статической HTML-страницей. JSP - это способ динамического рендеринга HTML.

Если вы делаете то, что предлагал JB Nizet, вам никогда не придется беспокоиться о том, что JSP-рендеринг что-либо сделает, если он не прошел точку входа вашего приложения. Так как вы контролируете эти точки входа, т.е. сервлеты, фильтры, контроллеры и т. д., вы можете решить, как будет отображаться ответ.

Запрограммируйте ваши преобразования URL соответствующим образом. Пользователи пытаются получить доступ

http://mydomain/myWebApp/resouces/stuff.png

не обязательно получать статический ресурс изображения stuff.png если они прошли соответствующие фильтры. Вы можете очень хорошо заблокировать доступ.

Другие вопросы по тегам