1
當我請求/personal/faces/public/login.xhtml
時,它工作正常,但是當我請求/personal/public/login.xhtml
而沒有/faces
時,我獲得了頁面的原始源代碼。避免直接訪問JSF的源代碼頁
我想避免人們可以看到頁面的源代碼。我怎樣才能做到這一點?
當我請求/personal/faces/public/login.xhtml
時,它工作正常,但是當我請求/personal/public/login.xhtml
而沒有/faces
時,我獲得了頁面的原始源代碼。避免直接訪問JSF的源代碼頁
我想避免人們可以看到頁面的源代碼。我怎樣才能做到這一點?
發生這種情況是因爲您在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應用程序部署和文件系統的其他部分請求和下載工件。這是您需要查看的安全漏洞。這些選項取決於您的應用服務器
相關: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