Перемещение ресурсов под WEB-INF
У меня есть веб-приложение, которое содержит сотни файлов HTML, JavaScript и изображений. Эти файлы расположены в корневом каталоге:
my_root--
-- html
-- js
-- images
Эти папки содержат несколько подпапок.
Из соображений безопасности мне нужно переместить все эти ресурсы в папку WEB-INF, чтобы они не были напрямую доступны.
В настоящее время файлы JSP и сервлета уже находятся в папке WEB-INF.
Какой самый простой способ для меня - безопасно переместить все папки HTML/JavaScript/images в WEB-INF без разрыва всех ссылок / пересылки на ресурсы в этих папках и убедиться, что эти ресурсы не доступны напрямую?
Я использую серверы WebSphere и WebLogic.
2 ответа
Какой самый простой способ для меня - безопасно переместить все папки html/js/images в WEB-INF без разрыва всех ссылок / пересылки на ресурсы в этих папках и убедиться, что эти ресурсы не доступны напрямую?
Вы делаете ошибку здесь. Ресурсы HTML/JS/image (и CSS) должны быть доступны в любом случае. Для JSP история другая, некоторые из них, если не все, должны быть предварительно обработаны сервлетом (например, чтобы извлечь некоторый список из БД для отображения в таблице). Если бы к этим JSP обращались напрямую, то этот шаг сервлета был бы вообще пропущен, что совершенно не то, что вам нужно (JSP заканчиваются "пустыми", без каких-либо данных из БД). Вот почему они должны быть скрыты в /WEB-INF
чтобы предотвратить прямой доступ без предварительной обработки сервлета предварительной обработки. Кроме того, в случае основанных на сервлетах инфраструктур MVC таким образом весь процесс инфраструктуры MVC (сбор параметров запроса, их преобразование / проверка, обновление значений модели, вызов действий и т. Д.) Будет пропущен.
Ваше конкретное функциональное требование не совсем понятно (весь вопрос сам по себе не имеет смысла; ответ просто "не делайте этого"), но если вы действительно хотите ограничить доступ к статическим ресурсам, которые не нужно Предварительно обрабатывается сервлетом только для определенных пользователей, затем вам необходимо внедрить систему аутентификации / входа в систему. Вы можете использовать управляемую контейнером аутентификацию или homegrow a Filter
за это.
Вы можете использовать очень простой инструмент, такой как notepad++, и использовать функцию findAndReplace. Eclipse также может сделать это, но сложно эффективно найти каждую ссылку.
Обратите внимание, что существуют другие способы запретить пользователям доступ к вашим изображениям. Вероятно, проще просто оставить вещи там, где они есть, и дать указание веб-сфере прекратить обслуживание этих изображений из папки изображений.