限制對Web資源的訪問

2021-03-31 08:56:28 字數 1941 閱讀 2003

現在,可以指示伺服器使用何種驗證方法了。「了不起,」你說道,「除非我能指定乙個來收到保護的url,否則沒有多大用處。」沒錯。指出這些url並說明他們應該得到何種保護正是security-constriaint元素的用途。此元素在web.xml中應該出現在login-config的緊前面。它包含是個可能的子元素,分別是:web-resource-collection、auth-constraint、user-data-constraint和display-name。下面各小節對它們進行介紹。

l web-resource-collection

此元素確定應該保護的資源。所有security-constraint元素都必須包含至少乙個web-resource-collection項。此元素由乙個給出任意標識名稱的web-resource-name元素、乙個確定應該保護的url的url-pattern元素、乙個指出此保護所適用的http命令(get、post等,預設為所有方法)的http-method元素和乙個提供資料的可選description元素組成。例如,下面的web-resource-collection項(在security-constratint元素內)指出web應用的proprietary目錄中所有文件應該受到保護。

proprietary

/propritary/*

重要的是應該注意到,url-pattern僅適用於直接訪問這些資源的客戶機。特別是,它不適合於通過mvc體系結構利用requestdispatcher來訪問的頁面,或者不適合於利用類似jsp:forward的手段來訪問的頁面。這種不勻稱如果利用得當的話很有好處。例如,servlet可利用mvc體系結構查詢資料,把它放到bean中,傳送請求到從bean中提取資料的jsp頁面並顯示它。我們希望保證決不直接訪問受保護的jsp頁面,而只是通過建立該頁面將使用的bean的servlet來訪問它。url-pattern和auth-contraint元素可通過宣告不允許任何使用者直接訪問jsp頁面來提供這種保證。但是,這種不勻稱的行為可能讓開發人員放鬆警惕,使他們偶然對應受保護的資源提供不受限制的訪問。

l auth-constraint

儘管web-resource-collention元素質出了哪些url應該受到保護,但是auth-constraint元素卻指出哪些使用者應該具有受保護資源的訪問權。此元素應該包含乙個或多個標識具有訪問許可權的使用者類別role-name元素,以及包含(可選)乙個描述角色的description元素。例如,下面web.xml中的security-constraint元素部門規定只有指定為administrator或big kahuna(或兩者)的使用者具有指定資源的訪問權。

...

administrator

kahuna

重要的是認識到,到此為止,這個過程的可移植部分結束了。伺服器怎樣確定哪些使用者處於任何角色以及它怎樣存放使用者的口令,完全有賴於具體的系統。

例如,tomcat使用install_dir/conf/tomcat-users.xml將使用者名稱與角色名和口令相關聯,正如下面例子中所示,它指出使用者joe(口令bigshot)和jane(口令enaj)屬於administrator和kahuna角色。

l user-data-constraint

這個可選的元素指出在訪問相關資源時使用任何傳輸層保護。它必須包含乙個transport-guarantee子元素(合法值為none、integral或confidential),並且可選地包含乙個description元素。transport-guarantee為none值將對所用的通訊協議不加限制。integral值表示資料必須以一種防止擷取它的人閱讀它的方式傳送。雖然原理上(並且在未來的http版本中),在integral和confidential之間可能會有差別,但在當前實踐中,他們都只是簡單地要求用ssl。例如,下面指示伺服器只允許對相關資源做https連線:

confidential

l display-name

security-constraint的這個很少使用的子元素給予可能由gui工具使用的安全約束項乙個名稱。

springmvc對靜態資源的訪問

1 在webmvc conf.xml檔案中,新增 location web inf web resources 表示對專案中的靜態資源可以直接已專案名 resources來進行訪問。2 controller層返回json資料方法 在配置檔案中增加如下配置 register defaults true...

springmvc對靜態資源的訪問

在web.xml檔案中經常看到這樣的配置default,這個配置的作用是 對客戶端請求的靜態資源如 js檔案等的請求交由預設的servlet進行處理,如下所示 下面是從中摘錄的一些資料 如何你的dispatcherservlet攔截 do 這樣的有字尾的url,就不存在訪問不到靜態資源的問題。如果你...

使用docker對容器資源進行限制

在伺服器當中,假設iis服務部署多個站點,那麼只要其中乙個站點出問題,假設是cpu100 或者是記憶體爆滿,那麼這台伺服器上的其他站點都會跟著掛掉。同樣在使用容器時,單台主機上可能會跑幾十個容器,容器雖然都相互隔離,但是用的卻是與宿主機相同的核心,cpu 記憶體 磁碟等硬體資源。如果不對容器資源進行...