把JSP放到WEB-INF后以保護(hù)JSP源代碼
為了更好地保護(hù)你的JSP避免未經(jīng)授權(quán)的訪問和窺視, 一個(gè)好辦法是將頁面文件存放在Web應(yīng)用的WEB-INF目錄下。
通常JSP開發(fā)人員會把他們的頁面文件存放在Web應(yīng)用相應(yīng)的子目錄下。一個(gè)典型的商店應(yīng)用程序的目錄結(jié)構(gòu)如圖2所示。跟catalog(商品目錄)相關(guān)的JSP被保存在catalog子目錄下。跟customer相關(guān)的JSP,跟訂單相關(guān)的JSP等都按照這種方法存放。
這種方法的問題是這些頁面文件容易被偷看到源代碼,或被直接調(diào)用。某些場合下這可能不是個(gè)大問題,可是在特定情形中卻可能構(gòu)成安全隱患。用戶可以繞過Struts的controller直接調(diào)用JSP同樣也是個(gè)問題。
為了減少風(fēng)險(xiǎn),可以把這些頁面文件移到WEB-INF目錄下?;赟ervlet的聲明,WEB-INF不作為Web應(yīng)用的公共文檔樹的一部分。因此,WEB-INF目錄下的資源不是為客戶直接服務(wù)的。我們?nèi)匀豢梢允褂肳EB-INF目錄下的JSP頁面來提供視圖給客戶,客戶卻不能直接請求訪問JSP。
采用前面的例子,圖3顯示將JSP頁面移到WEB-INF 目錄下后的目錄結(jié)構(gòu)
如果把這些JSP頁面文件移到WEB-INF目錄下,在調(diào)用頁面的時(shí)候就必須把WEB-INF添加到URL中。例如,在一個(gè)Struts配置文件中為一個(gè)logoffaction寫一個(gè)Action mapping。其中JSP的路徑必須以WEB-INF開頭。如下所示:請注意粗體部分.
這個(gè)方法在任何情況下都不失為Struts實(shí)踐中的一個(gè)好方法。是唯一要注意的技巧是你必須把JSP和一個(gè)Struts action聯(lián)系起來。即使該Action只是一個(gè)很基本的很簡單JSP,也總是要調(diào)用一個(gè)Action,再由它調(diào)用JSP。
最后要說明的是,并不是所有的容器都能支持這個(gè)特性。WebLogic早期的版本不能解釋Servlet聲明,因此無法提供支持,據(jù)報(bào)道在新版本中已經(jīng)改進(jìn)了。總之使用之前先檢查一下你的Servlet容器。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報(bào)。