Разрешат ли аннотации Servlet 3 секретный доступ через черный ход? - PullRequest
1 голос
/ 06 августа 2010

Я надеюсь, что люди не возражают против того, чтобы я задавал вопрос, который немного смотрит в будущее. Пожалуйста, простите меня, если мое понимание неверно (и, пожалуйста, исправьте меня!). Сервлет 3 представляет несколько новых аннотаций, включая:

@ WebServlet

@ WebFilter

@ WebListener

, а также нечто, называемое web-фрагмент.xml . Похоже, что все они направлены на то, чтобы сделать возможным развертывание сервлетов, фильтров и прослушивателей без необходимости редактировать web.xml.

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

Ответы [ 4 ]

4 голосов
/ 06 августа 2010

Может быть, а может и нет.(Точно не знаю).Но если вы беспокоитесь о том, что недобросовестные провайдеры могут делать в своих JAR-файлах, есть целый ряд других неприятных вещей, которые они могли бы делать на старой Java.Если вы беспокоитесь о подобных вещах, вам действительно нужно настаивать на получении исходного кода, и вам необходимо провести тщательный аудит кода перед тем, как выпустить его на свои рабочие серверы.

3 голосов
/ 06 августа 2010

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

2 голосов
/ 06 августа 2010

Вы можете использовать элемент <absolute-ordering> в основном дескрипторе развертывания web.xml, чтобы перечислять только файлы jar в WEB-INF / lib, которые вы хотите автоматически анализировать для аннотаций и дескрипторов web-фрагмента.xml во время развертывания. ,

В этом случае содержимое веб-фрагментов или аннотированных классов в других файлах JAR не развертывается автоматически.

1 голос
/ 06 августа 2010

Вы сможете контролировать этот процесс, цитата из здесь :

Спецификация Servlet 3.0 также предоставляет возможность для инструктирования Веб-контейнер, будь то контейнер следует обработать аннотации, определенные на веб-компонентах. Имя элемент полон метаданных, и это дочерний элемент элемента веб-приложения. Элемент, полный метаданных указывает ли метаданные информация доступна в дескриптор развертывания завершен. Так, если значение для метаданных завершено элемент имеет значение true, тогда это означает, что мета информация найдена в развертывании дескриптор завершен и в конце концов аннотации, определенные в Интернете компоненты будут игнорироваться Сервлет Контейнер. Если значение для metadata-complete установлен в false, тогда это означает, что информация в дескриптор развертывания не полные и веб-компоненты оформлены с аннотациями, если таковые имеются, должны быть сканируется и обрабатывается в Интернете Контейнер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...