Перед JSF 2.2 ресурсы, такие как javascript, css и составные компоненты, будут помещены в корень веб-архива в папку /resources
. Ограничение безопасности в WEB-INF будет сопровождать эту установку для предотвращения прямого доступа:Где должны размещаться ресурсы JSF 2.2: WEB-INF или корень
<security-constraint>
<display-name>Restrict direct access to JSF resources</display-name>
<web-resource-collection>
<web-resource-name>JSF resources</web-resource-name>
<url-pattern>/resources/*</url-pattern>
</web-resource-collection>
<auth-constraint />
</security-constraint>
В JSF 2.2, однако, вы можете просто поместить папку ресурсов в WEB-INF: /WEB-INF/resources
. Это дает неявной защите ресурсов от прямого доступа.
WEB-INF
в соответствии с Tomcat documentation и IBM documentation описывает это как папку для хранения файлов конфигурации. Кажется, что взломать ресурсы неконфигурации в WEB-INF
просто для того, чтобы получить защиту каталога WEB-INF
.
Оба метода хранения ресурсов идентичны по своему эффекту? Есть ли у них какие-либо конкретные недостатки для любого метода?
Hack? Зачем? помещая его под * root/resources/*, ничего не дает, кроме как дать вам дополнительную работу по его обеспечению. Половина выгоды от наличия * WEB-INF * в первую очередь - защита. Кроме того, вы не ограничены * WEB-INF *; Вы также можете использовать свои ресурсы в * META-INF *. То, что вы соглашаетесь на * в основном на основе мнения * – kolossus
Я спросил, был ли это взлом, потому что у меня создалось впечатление, что папка WEB-INF предназначена для файлов конфигурации/метаданных. Если нет, то какова цель папки «WEB-INF»? – Kevin
Лично я никогда не рассматривал ресурсы в папке WEB-INF для взлома. Но вы правы, спецификация Servlet (3.0) подчеркивает важность этой папки для «информации о конфигурации». Btw, где вы нашли рекомендацию для '/ WEB-INF/resources' в спецификации JSF 2.2? Я ничего подобного не вижу. – rwitzel