【发布时间】:2011-09-14 13:02:29
【问题描述】:
当您使用 JSF 时,您将拥有将映射到以下内容的控制器 servlet javax.faces.webapp.FacesServlet:
<servlet-mapping>
...
<url-pattern>/somefacesurl/*</url-pattern>
</servlet-mapping>
将mypage.xhtml放在/中,我们有安全风险,因为它会以两种方式访问(从应用程序上下文开始):
1)/somefacesurl/mypage.xhtml
2)/mypages.xhtml
第一个是jsf处理的,是正确的。 第二个不被 jsf 处理,因此呈现给客户端暴露 jsf 标签,这是一个安全风险。
我只找到了两个解决方案
1) 始终映射到根 url:
<servlet-mapping>
...
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
很好的解决方案,但只允许按文件扩展名进行映射。
2) 映射到任何 url,并使用安全约束来禁止访问这些文件,如下所示: How to avoid user access to .xhtml page in JSF?
这两种解决方案都在 JSF 2.0 规范中作为可行的替代方案提出,但是没有关于这两种解决方案的不同安全方法的消息。
由于不考虑安全性,我想知道从访问 xhtml 文件的角度来看,第一个是否是“安全的”,或者可能存在获取 .xhtml 源的黑客攻击。
【问题讨论】:
-
很好的解决方案,但只允许文件类型映射,不允许更多目录映射。 没有得到这个。目录映射是什么意思?
-
此外,NetBeans (6.9.0) 等一些 IDE 采用第二种解决方案,未能记录安全风险。
标签: jsf netbeans security url-mapping