Ограничить доступ к файлам в Tomcat
В нашем продукте существует серьезная проблема безопасности, которая выполняется на сервере Apache Tomcat, прослушивающем порты 80 и 443. Маршрутизация входящих пакетов HTTP/HTTPS на эти порты настраивается нашими классами продуктов, что не позволяет гарантировать, что каждый запрошенный URL-адрес ссылается на файл, который расположен в веб-корне сервера и имеет тип, который разрешено обслуживать.
В частности, пакеты, которые соответствуют "/error/*" в URL, настроены на использование папки "docroot" в качестве корневого каталога документов для обслуживания файлов. И так пути, которые выходят из каталога / error / (т.е. docroot), используя обратные косые черты в кодировке URL %5C
также могут быть доступны и загружены. Например, удаленный пользователь может указать URL-адрес, например:
https://MyDomain/error/..%5c..%5csettings.properties
чтобы получить доступ к удаленному файлу settings.properties, который находится на том же уровне, что и docroot. Мы пытаемся преодолеть это с помощью правил брандмауэра и сегментации сети. Но есть ли в tomcat параметр, который можно использовать для предотвращения доступа удаленных пользователей к файлам вне корневой папки проекта. Это было бы очень полезно.
2 ответа
Если вы хотите ограничить прямой URL-доступ к некоторым файлам, поместите их в каталог WEB-INF.
Цитата отсюда (примечание: приведенный ниже URL в настоящее время недоступен):
http://www.servletworld.com/servlet-tutorials/web-application-directory-structure.html
Корневой каталог содержит каталог с именем WEB-INF. Все, что находится в корневом каталоге, кроме каталога WEB-INF, является общедоступным и доступно по URL-адресу из браузера.
Каталог WEB-INF является частной областью веб-приложения, доступ к любым файлам в каталоге WEB-INF нельзя получить непосредственно из браузера, указав URL-адрес, например
http://somesite/WEB-INF/someresource.html
, Веб-контейнер не будет обслуживать содержимое этого каталога. Однако содержимое каталога WEB-INF доступно для классов в приложении. Поэтому, если есть какие-либо ресурсы, такие как JSP или HTML-документ, которые вы не хотите, чтобы они были доступны непосредственно из веб-браузера, вам следует поместить их в каталог WEB-INF.
Вы можете ограничить доступ к своей папке с ошибками с помощью роботов. а также вы можете отобразить запись в error/* на перенаправленную страницу.
Кодирование всех запросов и ответов должно решить проблему / -> %5c