Стандартная практика размещения JSP

Является ли действительной, стандартной и рекомендуемой практикой размещение

  • #P2# <блочная цитата> #P3#
  • защищенные страницы, такие как

    admin.jsp, reports.jsp, manageusers.jsp, manageproducts.jsp...

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

  • и для включает в себя как

    navigation.jsp, header.jsp, footer.jsp, sitemap.jsp...

    находиться в специально защищенном каталоге, чтобы не было прямого доступа с url ??


person Devon Ravihansa    schedule 06.04.2015    source источник
comment
и другие рекомендации по практике...   -  person Devon Ravihansa    schedule 07.04.2015


Ответы (2)


Это звучит так, как будто кто-то ведет дебаты и хочет решить тай-брейк? :)

Это можно было бы нарезать тысячей способов... но лично я бы не стал описывать цель размещения их в WEB-INF из соображений безопасности, это просто потому, что вы не хотите, чтобы пользователь напрямую обращался к этим ресурсам по разным причинам. .

Возможно, вы могли бы использовать WEB-INF как часть своей инфраструктуры безопасности, но я бы не сказал, что это стандартная передовая практика. Безопасность должна начинаться на уровне запроса, и то, как вы предоставляете эти ресурсы пользователю, зависит от вас — WEB-INF не является «самым» решением и не «должен» им быть.

Размещение доступных ресурсов за пределами WEB-INF... ну да, почему бы и нет?

Различные фреймворки могут заставить вас каким-то образом поместить все ресурсы в WEB-INF и сделать их доступными через различные механизмы контроллера/фильтра/сервера, но это будет исключительно свойством фреймворка и не должно наводить вас на мысль, что размещение ресурсов вне WEB-INF — нет-нет.

person slambeth    schedule 06.04.2015

  1. Когда вы размещаете JSP-страницы «снаружи» WEB-INF, Default-Servlet вашего контейнера сервлетов (например, Tomcat) проверит URL-адрес, вызовет JSP и отправит ответ в браузер.

  2. Когда вы помещаете его в WEB-INF, вы пишете свой собственный сервлет (контроллер), который проверяет URL-адрес и с помощью какой-то логики перенаправляет/перенаправляет на JSP.

Хороший уровень безопасности (вероятно, основанный на фильтре) реализует безопасность, которая позаботится об обоих вышеперечисленных случаях. Потому что вы действительно хотите, чтобы ваш сервлет по умолчанию был «вызван» неавторизованными людьми?

Насколько я знаю, лучше всего создать папку с именем «public» в папке «WebContent» и поместить туда только незащищенный контент. Ваш фильтр должен проверять каждый URL-запрос к вашему серверу /* и действовать соответствующим образом.

Кроме того, еще одна передовая практика — никогда не позволять URL-адресам заканчиваться на «.jsp». Даже что-то вроде «добро пожаловать», «вход в систему» ​​или «выход из системы» должно обрабатываться вашим собственным SecurityFilter + DisplayController.

Пример:

WebContent

--public
----css
------main.css
----images
------logo.png
----js
------common.js
--private  
----js
------ui_handler.js
--WEB-INF
----classes
----jsp
person Mecon    schedule 06.04.2015