Защита приложения JSF для предотвращения доступа к ресурсам приложения XML в папке WEB-INF - PullRequest
2 голосов
/ 15 января 2020

В настоящее время я поддерживаю веб-приложение J2EE, которое использует JSF 1.2 с Spring MVC. Недавно было замечено, что приложение позволяет отображать различные XML ресурсы в папке WEB-INF / путем настройки URL. Например, URL-адрес приложения: https://www.example.org/abc-app/faces//WEB-INF/web.xml, что приводит к отображению web. xml (abc_app является корневым контекстом; в URL-адресе есть два преднамеренных символа "//", которые вызывают xml файлы для отображения). В приложении не было элемента, определенного в сети. xml, поэтому я добавил его следующим образом:

<security-constraint>
    <display-name>excluded</display-name>
        <web-resource-collection>
            <web-resource-name>No Access</web-resource-name>
            <url-pattern>/abc-app/WEB-INF/*.xml</url-pattern>
            <url-pattern>/abc-app/faces//WEB-INF/*.xml</url-pattern>
            <url-pattern>/abc-app/faces/*</url-pattern>
            <url-pattern>/faces/*</url-pattern>
            <url-pattern>/faces//*</url-pattern>
            <url-pattern>/*.xml</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>NoAccess</role-name>
        </auth-constraint>   
</security-constraint>

К сожалению, это не помогло, и приложение по-прежнему отображает файлы XML. Какой-нибудь совет относительно того, что можно сделать, чтобы предотвратить отображение файлов XML в папке WEB-INF?

Дополнительная информация: Наше приложение развернуто на WebSphere Application Server и выполняет собственную аутентификацию с использованием SAML на WebServer. уровень.

1 Ответ

0 голосов
/ 17 января 2020

Я просмотрел веб. xml и заметил, что он имеет следующие сопоставления сервлетов:

<servlet-mapping>
   <servlet-name>Faces Servlet</servlet-name>
   <url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
</servlet-mapping>

Я обновил его, чтобы иметь только следующие

<servlet-mapping>
   <servlet-name>Faces Servlet</servlet-name>
   <url-pattern>*.faces</url-pattern>
</servlet-mapping>

Это помогло решить проблемы и файлы XML больше не доступны.

Однако настоятельно рекомендуется обновить JSFv1 до JSF2, если кто-то все еще использует его.

...