Перемещение ресурсов под 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 также может сделать это, но сложно эффективно найти каждую ссылку.

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

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