配置 Java Servlet 3.1 安全支援
Liberty 支援 Java™ Servlet 3.1 規格中所定義的所有安全更新項目。
關於這項作業
在 Liberty 上利用 Java Servlet 3.1 特性。
程序
- 新增 servlet-3.1 特性到 server.xml 檔:
<feature>servlet-3.1</feature>
- 決定您想使用下列哪些 Java Servlet 3.1 功能:
- 在登入表單中指定 autocomplete=off。當您使用 HTML 表單登入頁面時,請將密碼表單欄位設為 autocomplete="off",以停用在 Web 瀏覽器中自動填入密碼。例如:
<form method="POST" action="j_security_check"> <input type="text" name="j_username"> <input type="password" name="j_password" autocomplete="off"> </form>
- 指定所有鑑別安全限制 (**)。特殊角色名稱 ** 表示任何已鑑別的使用者。當 ** 顯示在授權限制中時,如果使用者經過鑑別,該使用者有權存取限制項中指定的方法。在應用程式連結中,使用者不必對映至這個角色。例如:
<security-constraint id="SecurityConstraint_1"> <web-resource-collection id="WebResourceCollection_1"> <web-resource-name>Protected with ** role</web-resource-name> <url-pattern>/AnyAuthSecurityConstraint</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <auth-constraint id="AuthConstraint_1"> <role-name>**</role-name> </auth-constraint> </security-constraint>
當使用角色名稱 ** 呼叫 isUserInRole() 方法時,如果使用者經過鑑別,isUserInRole() 會傳回 true。如果 ** 在配置中是安全角色中所定義的一個角色,不會將它視為任何特殊的已鑑別使用者角色。在應用程式連結中,使用者必須對映至該角色, isUserInRole 才會傳回 true。
- 在 web.xml 檔中指定 deny-uncovered-http-methods 旗標。如果在 web.xml 檔內指定 deny-uncovered-http-methods 元素,儲存器會拒絕任何未涵蓋的 HTTP 方法,亦即這些 HTTP 方法未列舉在要求 URL 最符合之 URL 型樣的合併安全限制內。會傳回 403 (SC_FORBIDDEN) 狀態碼。例如:
<servlet-mapping id="ServletMapping_1"> <servlet-name>MyServlet</servlet-name> <url-pattern>/MyURLPattern</url-pattern> </servlet-mapping> <deny-uncovered-http-methods/> <!-- SECURITY CONSTRAINTS --> <security-constraint id="SecurityConstraint_1"> <web-resource-collection id="WebResourceCollection_1"> <web-resource-name>Protected with Employee or Manager roles</web-resource-name> <url-pattern>/MyURLPattern</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <auth-constraint id="AuthConstraint_1"> <role-name>Employee</role-name> <role-name>Manager</role-name> </auth-constraint> </security-constraint>
如果 web.xml 檔中指定了 deny-uncovered-http-methods 元素,會在 messages.log 檔中,針對每一個 Servlet 的每一個 URL 型樣記載訊息,以指出未涵蓋的方法,並附註那些未涵蓋的方法未受保護且無法存取。例如:對於 Servlet MyServlet 中的 URL MyURLPattern,下列 HTTP 方法未涵蓋且無法存取:DELETE OPTIONS HEAD PUT TRACE
如果未在 web.xml 檔中指定 deny-uncovered-http-methods 元素,會在 messages.log 檔中,針對每一個 Servlet 的每一個 URL 型樣記載訊息,以指出未涵蓋的方法,並附註那些未涵蓋的方法未受保護且可以存取。例如:對於 Servlet MyServlet 中的 URL MyURLPattern,下列 HTTP 方法未涵蓋,且可以存取:DELETE OPTIONS HEAD PUT TRACE
- 在登入表單中指定 autocomplete=off。
結果

檔名:twlp_servlet31.html