【问题标题】:Avoid direct access to source code of JSF page避免直接访问 JSF 页面的源代码
【发布时间】:2013-03-15 12:47:54
【问题描述】:

当我请求/personal/faces/public/login.xhtml 时,它可以正常工作,但是当我请求/personal/public/login.xhtml 而没有/faces 时,我获得了页面的原始源代码。

我想避免人们看到页面的源代码。我怎样才能做到这一点?

【问题讨论】:

标签: jsf


【解决方案1】:

发生这种情况是因为您在 web.xml 的 FacesServlet 配置中指定了 /faces/*。因此,任何与指定 url 模式不匹配的请求文件都将作为带有 GET 请求的常规文件提供 将该配置更改为以下内容,以确保所有与 JSF 相关的请求都通过 FacesServlet:

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

这可确保在返回客户端之前处理所有带有 .xhtml 扩展名的文件。

虽然上述解决方案可能会解决眼前的问题,但您遇到的情况表明存在更深层次的安全问题。它表明任何使用浏览器的人都可以从您的 Web 应用程序部署以及可能的文件系统的其他部分请求和下载工件。这是您需要调查的安全漏洞。选项因您的应用服务器而异

【讨论】:

  • 然而,可以在 URL («path».xthml/) 中添加一个斜杠,仍然可以获得源代码(在 JBoss EAP 中测试)。因此,为了安全起见,您需要进行更多配置(甚至最好停止使用 JSF legacy)。
猜你喜欢
  • 1970-01-01
  • 2011-08-06
  • 2015-12-14
  • 2012-11-20
  • 2013-05-05
  • 2012-05-21
  • 1970-01-01
  • 1970-01-01
  • 2016-09-25
相关资源
最近更新 更多