2013-03-15 39 views
1

當我請求/personal/faces/public/login.xhtml時,它工作正常,但是當我請求/personal/public/login.xhtml而沒有/faces時,我獲得了頁面的原始源代碼。避免直接訪問JSF的源代碼頁

我想避免人們可以看到頁面的源代碼。我怎樣才能做到這一點?

+0

相關:http://stackoverflow.com/questions/3008395/jsf-facelets-sometimes-i-see-the-url-is-jsf-and-sometimes-xhtml-why /和http://stackoverflow.com/questions/3112946/jsf-link-results-in-plain-xhtml-file-instead-of-generated-jsf-page – BalusC 2013-03-15 13:48:19

回答

3

發生這種情況是因爲您在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應用程序部署和文件系統的其他部分請求和下載工件。這是您需要查看的安全漏洞。這些選項取決於您的應用服務器