日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > 第十四章_安全性

第十四章_安全性

來源:程序員人生   發布時間:2014-09-09 10:20:52 閱讀次數:2151次

14.1、驗證和授權

驗證是檢驗某個人是否是他/她所聲稱的那個人的過程。在Servlet/JSP應用程序中,驗證一般是通過要求用戶輸入用戶名和密碼來完成的。

授權主要是確定一個用戶具有什么樣的訪問級別。它使用于包含多個訪問區域的應用程序,使用戶能夠訪問應用程序的某一部分,但是不能訪問其他部分。例如,網上商店可以分為公共區(供一般的公共瀏覽和查找商品),買家區(供已注冊用戶下單用),以及需要最高訪問級別的管理區。不僅管理員用戶自身也需要進行驗證,并且還必須是已經被允許訪問管理區的用戶才行。訪問級別經常被稱作角色。

 

14.1.1、定義用戶和角色

每一種兼容的Servlet/JSP容器都必須提供一種定義用戶和角色的方法。如果你使用的是Tomcat,就可以通過編輯conf目錄下的tomcat-users.xml文件來創建用戶和角色。tomcat-users.xml文件范例如下:

<?xml version=’1.0’ encoding=’utf-8’?>

<tomcat-users>

<role rolename=”manager”/>

<role rolename=”member”/>

<user username=”tom” password=”secret” roles=”manager,member”/>

<user username=”jerry” password=”secret” roles=”member”/>

</tomcat-users>

tomcat-users.xml文件是一個帶有tomcat-users根源素的XML文檔。其中有roleuser元素。role元素定義角色,user元素定義用戶。role元素有一個rolename屬性,用來指定角色的名稱。user元素有usernamepasswordroles屬性。username屬性指定用戶名稱,password屬性指定密碼,roles屬性則指定該用戶所屬的一個或多個角色


14.1.2、強加安全性約束

前面講過,將靜態資源和JSP頁面保存在WEB-INF或其下的某一個目錄下,可以講他們隱藏起來。放在這里的資源無法直接通過輸入網址而訪問到,但是仍然可以通過一個Servlet或者JSP頁面跳轉到那里。雖然這種方法簡單直接,但缺點是藏在這里的資源就永遠被藏起來了。它們永遠無法被直接訪問到。如果只是想避免未授權的用戶訪問這些資源,那么可以講它們放在應用程序目錄下的某一個目錄中,并在部署描述符中聲明一個安全性約束。

security-constraint元素用于指定一個資源集合,以及可以訪問這些資源的一個或多個角色。這個元素可以有兩個子元素:web-resource-collectionauth-constraint

web-resource-collection元素用于指定一個資源集合,并且可以帶有以下元素:web-resource-namedescriptionurl-patternhttp-methodhttp-method-ommission

web-resource-collection元素可以帶有多個url-pattern元素,每一個子元素都表示所包含安全性約束實行的一種URL模式。我們可以在url-pattern元素中用一個星號(*)表示一種特定的資源類型(*.jsp),或者表示某個目錄下的所有資源(/*/jsp/*)。但是這兩種不能合二為一,比如,無法表示某一個特定目錄下的某一種特定的類型。因此,如果用/jsp/*.jsp表示jsp目錄下的所有jsp頁面,那么這個URL模式將是無效的,而是要用/jsp/*來表示,但是這樣又限制了jsp目錄下那些非jsp的頁面。

http-method元素中定義了一個HTTP方法,包含的安全性約束即應用到該方法中。例如,web-resource-collection元素帶有一個GET http-method元素,表示web-resource-collection元素只應用于HTTPget方法。包含資源集合的安全性約束并不能保護其他的HTTP方法,例如Post方法和Put方法。如果沒有http-method元素,表示這個安全性約束將會限制對所有HTTP方法的訪問。同一個web-resource-collection元素中可以帶有多個http-method元素。

http-method-omission元素指定的是不再所包含安全性約束中的HTTP方法。因此,指定<http-method-omission>GET</http-method-omission>限制了對除GET之外的所有HTTP方法的訪問。

http-methodhttp-method-omission元素不能同時出現在同一個web-resource-collection元素中。

部署描述符中可以有多個security-constraint元素。如果安全性約束元素中沒有auth-constraint元素,那么這個資源集合將不能受到保護。此外,如果你指定了一個沒有在容器中定義的角色,那么將沒有人能夠直接訪問這個資源集合。但是,你還是可以通過一個Servlet或者JSP頁面跳轉到集合中的某個資源。

舉個例子。下面的web.xml文件中的security-constraint元素限制了對所有jsp頁面的訪問。由于auth-constraint元素中沒有包含role-name元素,因此不能通過url來訪問這些資源。

 

<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <security-constraint> <web-resource-collection> <web-resource-name>JSP pages</web-resource-name> <!-- 所有的jsp頁面都不能被訪問 --> <url-pattern>*.jsp</url-pattern> </web-resource-collection> <auth-constraint></auth-constraint> </security-constraint> </web-app>

現在,可以在瀏覽器中打開網址測試一下:

Servlet容器會發送一條HTTP403錯誤,溫柔地告訴你:Access to the requested resource has been denied(禁止訪問)。


14.2、驗證方法

學會如何對一個資源集合強加安全性約束之后,還應該知道如何對訪問這些資源的用戶進行驗證。對于聲明式保護的資源,可以在部署描述符中使用security-constraint元素,通過使用HTTP 1.1提供的解決方案來完成驗證:基本訪問驗證和摘要訪問驗證。此外,也可以使用基于表單的訪問驗證。

 

14.2.1、基本訪問驗證

基本訪問驗證,簡稱基本驗證,是一種接受用戶名和密碼的HTTP驗證。在基本訪問驗證中,如果用戶訪問受保護的資源,將會遭到服務器的拒絕,并返回一個401(未授權)響應。該響應中包含一個WWW-Authenticate標頭,其中至少包含一個適用于被請求資源的角色,例如:

HTTP/1.1 401 Authorization Required

Server: Apache-Coyote/1.1

Date: Wed, 21 Dec 2011 11:32:09 GMT

WWW-Authenticate: Basic realm=”Members Only”

隨后瀏覽器屏幕上回顯示一個登錄對話框,供用戶輸入用戶名和密碼。當用戶單擊Login登錄按鈕時,用戶名后面會被添上一個冒號,并和密碼結合在一起。這個字符串被送到服務器之前,將先用Base64算法進行編碼。登錄成功之后,服務器就會發出被請求的資源。

Base64是一種很弱的算法,因此Base64消息很容易被破解。因此,要考慮使用摘要訪問來代替。

下面展示了如何使用基本訪問驗證。第一個security-constraint元素是避免JSP頁面被直接訪問。第二個是限制只有managermember角色的用戶才能訪問Servlet1 ServletServlet1類是一個跳轉到1.jsp頁面的簡單Servlet

web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <security-constraint> <web-resource-collection> <web-resource-name>JSP pages</web-resource-name> <!-- 所有的jsp頁面都不能被訪問 --> <url-pattern>*.jsp</url-pattern> </web-resource-collection> <auth-constraint></auth-constraint> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name>Servlet1</web-resource-name> <url-pattern>/servlet1</url-pattern> </web-resource-collection> <auth-constraint> <role-name>member</role-name> <role-name>manager</role-name> </auth-constraint> </security-constraint> <login-config> <!-- BASIC必須全部大寫 --> <auth-method>BASIC</auth-method> <!-- 顯示在瀏覽器的登陸對話框中 --> <realm-name>Members Only</realm-name> </login-config> </web-app>

servlet1.java

package app11a.servlet; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(urlPatterns={"/servlet1"}) public class Servlet1 extends HttpServlet{ private static final long serialVersionUID = 1L; @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher dispatcher = request.getRequestDispatcher("/jsp/1.jsp") ; dispatcher.forward(request, response); } }


由于映射到Servlet1的auth-constraint元素指定了manager和member兩種角色,因此通過tom或者jerry都可以登錄。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产精品第一区 | 中文字幕福利 | 福利视频一区二区三区 | 国产一区不卡在线 | 91av视频在线免费观看 | 一区二区三区国产精品 | 国产h视频在线观看 | 亚洲精品国产成人 | 国内外成人在线视频 | 精品久久在线 | 欧美成人一区二区三区片免费 | 成年人视频网站 | 成人午夜久久 | 91视频在线观看 | 黄色亚洲精品 | 大陆一级毛片免费视频观看 | 欧美碰碰 | 日韩网站在线 | 欧美精品久久久久久久 | 成人免费激情视频 | 久久精品福利 | 国产成人精品免费 | 国产美女视频 | 日韩影片在线观看 | 国产伦精品一区二区三区免费 | 日韩av手机免费在线观看 | 91在线网站 | 欧美日韩天堂 | 久久久久国内精品 | 性天堂 | 在线91av| 精品国产青草久久久久96 | 欧美日韩国产在线一区 | 国产一区二区三区在线观看视频 | xxxxxwwwww免费| 久久成人一区二区 | 美女网站视频在线观看 | 亚洲欧美激情视频 | 日韩高清一级 | 北京一级毛片 | 久久免费视频网站 |