2015-04-06 64 views
4

是它有效,標準最佳實踐放置標準規程配售JSP

  • 公開訪問的網頁是WEB-INF文件夾,例如

    index.jsp, home.jsp, store.jsp, login.jsp, registration.jsp... and

  • admin.jsp, reports.jsp, manageusers.jsp, manageproducts.jsp...

    保護的頁面是用於安全原因WEB-INF文件夾(不能通過URL直接訪問)的內部通過創建控制器的servlet訪問它們

  • 和用於包括像

    navigation.jsp, header.jsp, footer.jsp, sitemap.jsp...

    特別保護目錄不被URL直接訪問?

+0

多的其他建議練... –

回答

2

這聽起來有點像某人正在進行辯論,並希望打破平局? :)

這可能被切成千方式......但我個人不會描述將它們放置在WEB-INF中的目的是出於安全原因,純粹是因爲您不希望用戶直接訪問這些資源,出於各種原因。

您可能會將WEB-INF用作安全基礎架構的一部分,但我不會說這是標準的最佳實踐。安全性應該從請求級別開始,然而您將這些資源交付給用戶則由您決定 - WEB-INF不是「解決方案」,也不是「需要」的。

在WEB-INF之外放置可訪問的資源......當然,爲什麼不呢?

不同的框架可能會讓您將所有資源放在WEB-INF中,並通過各種控制器/過濾器/ serlvet機制讓它們可訪問,但這僅僅是框架的一個屬性,不應該讓您相信在WEB-INF之外放置資源是一個禁忌。

0
  1. 當您將JSP頁面WEB-INF,Servlet容器的默認小服務程序(如Tomcat)的「外」將檢查URL,調用JSP和回送響應瀏覽器。當你把它放在WEB-INF中,然後你編寫你自己的Servlet(Controller),它檢查URL和某種邏輯,轉發/重定向到JSP。

一個很好的安全層(可能基於一個過濾器)將實現安全性,將照顧以上兩種情況。因爲,你真的希望你的默認Servlet被未經授權的人「調用」嗎?

據我所知,最佳實踐是在您的「WebContent」文件夾中創建一個名爲「public」的文件夾,並在其中僅放入不安全的內容。你的過濾器應該檢查每個URL請求到你的服務器/*並採取相應的行動。

此外,另一個最佳實踐絕不會讓任何URL以「.jsp」結尾。即使是像「歡迎」或「登錄」或「退出」應該由你自己SecurityFilter類+ DisplayController處理

例子:

WebContent 

--public 
----css 
------main.css 
----images 
------logo.png 
----js 
------common.js 
--private 
----js 
------ui_handler.js 
--WEB-INF 
----classes 
----jsp