無需修改代碼增強JSP和Servlet的安全性

來源:互聯網
上載者:User

編寫JSP和Servlet是容易的,但通常我們會面臨很多安全問題。當然,我們會在程式中加入大量的安全代 碼來解決這個問題,但加入這樣的安全寫入程式碼將使程式變得不靈活,而且不易維護。因此,在本文中將給出一 種無需修改代碼即可達到安全目的方法,並提供了一個執行個體進行說明。

在本文中的例子將通過一個使用者名稱和密碼以及傳輸層的SSL來保護應用程式的war檔案。使用者名稱和密碼以明 文在網路中傳輸。這一切並不需要編輯應用程式中的Java代碼和JSP頁。而為了使Servlet和JSP頁變得安全, 我們要做的只是配置web.xml檔案而已。

一、設定XML檔案

配置web.xml檔案的第一步是定義一個安全約束,也就是一個<security-constraint>標籤。這個標 簽將保護響應的URL,以使特定的使用者才能訪問它。注意我們必須要使用<http-method>標籤定義一個或 多個HTTP方法。如果你想讓安全約束應用到所有的HTTP方法,那麼只要簡單的忽略<http-method>標籤 即可。

做完上面的設定後,下一步需要設定SSL。我們可以使用<user-data-constraint>標籤以及這個標籤 的一個子標籤<transport-guarantee>來設定。卻將<transport-guarantee>的值設定成 CONFIDENTIAL。

最後一步我們需要設定驗證方法。這需要設定<login-config>標籤以及子標籤<auth-method> 。在這裡我們將<auth-method>設為BASIC。下面是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>

在上述的例子中,只有使用者"ttrole"才能訪問Servlet和JSP頁。

在Java EE環境中將使用這些使用者驗證,但在許多作業系統環境中,使用者和組關聯。因此,security-role -mapping在使用者頭組之間提供了一座橋樑。在Java EE 5應用伺服器中,我們可以在sun-application.xml檔案 中按如下的方式字義security-role-mapping標籤:

<sun-application>
   <security-role-mapping>
    <role- name>myrole</role-name>
    <principal-name>myuser</principal- name>
   </security-role-mapping>
   <security-role-mapping>
    <role-name>ttrole</role-name>
    <group-name>ttgroup</group- name>
   </security-role-mapping>
   <security-role-mapping>
    <role-name>arole</role-name>
    <principal-name>ttuser</principal- name>
   </security-role-mapping>
  </sun-application>

二、運行執行個體代碼

在這一節我們來講一下如何運行上面的程式。在這裡我們使用的整合式開發環境是NetBeans IDE 5.5以及 NetBeans企業開發包。在安裝完NetBeans後,我們需要進行以下幾步來運行這個程式。

1. 首先我們需要下載這個程式,下載串連為:例子代碼。 然後將其解壓。

2. 啟動NetBeans。

3. 開啟webann工程(剛才zip檔案中的NetBeans工程),如果出現一個" Resolve missing server problem"提示資訊,說明應用伺服器還沒有被加到NetBeans的伺服器列表中。我們可以選擇Tools > Server Manager,然後將相應的伺服器加到列表中。

4. 啟動Sun內嵌在NetBeans中的Java System Application Server。我們還可以通過在命令中輸入如下的 命令來啟動伺服器:

<appserv_install_dir>/bin/asadmin start-domain domain1

上面的<appserv_install_dir>是應用伺服器的安裝目錄。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.