首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> JSP 程式設計 >> 關於JSP

零代碼修改:透過 web.xml 設定強化 JSP 与 Servlet 安全性

     編輯:關於JSP

開發 JSP 和 Servlet 雖然容易,但安全性問題往往令人頭痛。傳統做法是在程式碼中硬編碼大量安全邏輯,導致程式不靈活、難以維護。本文將示範一種無需修改任何 Java 代碼或 JSP 頁面,僅透過配置 web.xml 即可實現應用程式安全防護的完整方案,並附上實戰範例說明。

核心策略:宣告式安全配置

Java EE 容器提供了強大的宣告式安全機制,允許開發者在部署描述檔 web.xml 中定義安全約束、驗證方式與資料傳輸保護。本範例結合基本認證(BASIC Auth)與 SSL 加密傳輸,保護 WAR 檔案內的所有資源。

步驟一:定義安全約束 <security-constraint>

首先建立一個 <security-constraint> 標籤,鎖定需受保護的 URL 模式與 HTTP 方法。若欲套用至所有 HTTP 方法,只需省略 <http-method> 標籤即可。

步驟二:強制啟用 SSL 傳輸 <user-data-constraint>

為防止帳號密碼以明文傳輸,必須配置 <user-data-constraint> 並將其子標籤 <transport-guarantee> 設為 CONFIDENTIAL,強制容器使用 HTTPS 連線。

步驟三:設定驗證機制 <login-config>

採用基本認證(BASIC),在 <auth-method> 中指定 BASIC,並定義 <realm-name>。同時需宣告 <security-role> 以對應角色名稱(如 ttrole)。

web.xml 關鍵配置片段

<security-constraint>
  <web-resource-collection>
    <web-resource-name>Servlet Application</web-resource-name>
    <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
    <role-name>ttrole</role-name>
  </auth-constraint>
  <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-constraint>
</security-constraint>
<login-config>
  <auth-method>BASIC</auth-method>
  <realm-name>default</realm-name>
</login-config>
<security-role>
  <role-name>ttrole</role-name>
</security-role>

角色映射:橋接容器角色與系統帳號

Java EE 容器識別的是邏輯角色,而作業系統管理的是實體使用者/群組。需在應用伺服器專用描述檔(如 Sun/Oracle GlassFish 的 sun-application.xml)中定義 <security-role-mapping>,將角色對應至實際帳號或群組:

<sun-application>
  <security-role-mapping>
    <role-name>ttrole</role-name>
    <group-name>ttgroup</group-name>
  </security-role-mapping>
</sun-application>

實戰演練:NetBeans 5.5 + Sun Java System Application Server

  1. 下載範例專案並解壓縮。
  2. 啟動 NetBeans IDE 5.5,開啟 webann 專案。
  3. 若提示缺少伺服器,至 Tools > Server Manager 新增 Sun Java System Application Server。
  4. 啟動內嵌應用伺服器:執行 <appserv_install_dir>/bin/asadmin start-domain domain1。
  5. 部署專案並以瀏覽器訪問,系統將彈出基本認證對話框,輸入對應帳號密碼即可存取受保護資源。

透過純配置方式實現安全防護,不僅消除程式碼耦合,更符合關注點分離原則,大幅降低維護成本。此方案適用於所有符合 Java EE 標準的應用伺服器。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved