保护 JSF 应用程序以防止访问 WEB-INF 文件夹内应用程序的 XML 资源
Securing a JSF application to prevent access to application's XML resources inside WEB-INF folder
我目前支持使用 JSF 1.2 和 Spring MVC 的 J2EE Web 应用程序。最近观察到该应用程序允许通过调整 URL 来显示 WEB-INF/ 文件夹下的各种 XML 资源。例如,应用程序的 URL 是 https://www.example.org/abc-app/faces//WEB-INF/web.xml 导致显示 web.xml (abc_app 是上下文根;并且故意在 [= 中有两个 '//' 23=] 导致显示 xml 文件)。该应用程序没有在web.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 文件。关于如何防止显示 WEB-INF 文件夹下的 XML 文件有什么建议吗?
一些附加信息:
我们的应用程序部署在 WebSphere Application Server 上,并在 WebServer 级别使用 SAML 进行自己的身份验证。
我查看了 web.xml 并注意到它具有以下 Servlet 映射:
<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,以防有人仍在使用它。
我目前支持使用 JSF 1.2 和 Spring MVC 的 J2EE Web 应用程序。最近观察到该应用程序允许通过调整 URL 来显示 WEB-INF/ 文件夹下的各种 XML 资源。例如,应用程序的 URL 是 https://www.example.org/abc-app/faces//WEB-INF/web.xml 导致显示 web.xml (abc_app 是上下文根;并且故意在 [= 中有两个 '//' 23=] 导致显示 xml 文件)。该应用程序没有在web.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 文件。关于如何防止显示 WEB-INF 文件夹下的 XML 文件有什么建议吗?
一些附加信息: 我们的应用程序部署在 WebSphere Application Server 上,并在 WebServer 级别使用 SAML 进行自己的身份验证。
我查看了 web.xml 并注意到它具有以下 Servlet 映射:
<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,以防有人仍在使用它。