• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            大龍的博客

            常用鏈接

            統計

            最新評論

            HTTPS的3種實現方法 --- 轉


            HTTPS實際是SSL over HTTP, 該協議通過SSL在發送方把原始數據進行加密,在接收方解密,因此,所傳送的數據不容易被網絡黑客截獲和破解。本文介紹HTTPS的三種實現方法。

            方法一 靜態超鏈接

            這是目前網站中使用得較多的方法,也最簡單。在要求使用SSL進行傳輸的Web網頁鏈接中直接標明使用HTTPS協議,以下是指向需要使用SSL的網頁的超鏈接:

            <a href=“HTTPS://192.168.100.100/ok/securePage.jsp”>SSL例子</a>

            需要說明的是,在網頁里的超鏈接如果使用相對路徑的話,其默認啟用協議與引用該超鏈接的網頁或資源的傳輸協議相同,例如在某超鏈接“HTTPS://192.168.100.100/ok/login.jps”的網頁中包含如下兩個超鏈接:

            <a href=“./bessl/exam.jsp”>SSL鏈接</a>

            <a href=“HTTP://192.168.100.100/notssl/index.jsp”>非SSL鏈接</a>

            那么,第一個鏈接使用與“HTTPS://192.168.100.100/ok/login.jsp”相同的傳輸協議HTTPS,第二個鏈接使用本身所標識的協議HTTP。

            使用靜態超鏈接的好處是容易實現,不需要額外開發。然而,它卻不容易維護管理; 因為在一個完全使用HTTP協議訪問的Web應用里,每個資源都存放在該應用特定根目錄下的各個子目錄里,資源的鏈接路徑都使用相對路徑,這樣做是為了方 便應用的遷移并且易于管理。但假如該應用的某些資源要用到HTTPS協議,引用的鏈接就必須使用完整的路徑,所以當應用遷移或需要更改URL中所涉及的任 何部分如:域名、目錄、文件名等,維護者都需要對每個超鏈接修改,工作量之大可想而知。再者,如果客戶在瀏覽器地址欄里手工輸入HTTPS協議的資源,那 么所有敏感機密數據在傳輸中就得不到保護,很容易被黑客截獲和篡改!

            方法二 資源訪問限制

            為了保護Web應用中的敏感數據,防止資源的非法訪問和保證傳輸的安全性,Java Servlet 2.2規范定義了安全約束(Security-Constraint)元件,它用于指定一個或多個Web資源集的安全約束條件;用戶數據約束(User- Data-Constraint)元件是安全約束元件的子類,它用于指定在客戶端和容器之間傳輸的數據是如何被保護的。用戶數據約束元件還包括了傳輸保證 (Transport-Guarantee)元件,它規定了客戶機和服務器之間的通信必須是以下三種模式之一:None、Integral、 Confidential。None表示被指定的Web資源不需要任何傳輸保證;Integral表示客戶機與服務器之間傳送的數據在傳送過程中不會被篡 改; Confidential表示數據在傳送過程中被加密。大多數情況下,Integral或Confidential是使用SSL實現。

            這里以BEA的WebLogic Server 6.1為例介紹其實現方法,WebLogic是一個性能卓越的J2EE服務器,它可以對所管理的Web資源,包括EJB、JSP、Servlet應用程序 設置訪問控制條款。假設某個應用建立在Weblogic Server里的/mywebAPP目錄下,其中一部分Servlets、JSPs要求使用SSL傳輸,那么可將它們都放在/mywebAPP /sslsource/目錄里,然后編輯/secureAPP/Web-INF/web.xml文件,通過對web.xml的設置可達到對Web用戶實現 訪問控制。

            當Web用戶試圖通過HTTP訪問/sslsource目錄下的資源時,Weblogic Server就會查找web.xml里的訪問約束定義,返回提示信息:Need SSL connection to access this resource。資源訪問限制與靜態超鏈接結合使用,不僅繼承了靜態超鏈接方法的簡單易用性,而且有效保護了敏感資源數據。然而,這樣就會存在一個問 題: 假如Web客戶使用HTTP協議訪問需要使用SSL的網絡資源時看到彈出的提示信息: Need SSL connection to access this resource,大部分人可能都不知道應該用HTTPS去訪問該網頁,造成的后果是用戶會放棄訪問該網頁,這是Web應用服務提供商不愿意看到的事情。

            方法三 鏈接重定向

            綜觀目前商業網站資源數據的交互訪問,要求嚴格加密傳輸的數據只占其中一小部分,也就是說在一個具體Web應用中 需要使用SSL的服務程序只占整體的一小部分。那么,我們可以從應用開發方面考慮解決方法,對需要使用HTTPS協議的那部分JSPs、Servlets 或EJBs進行處理,使程序本身在接收到訪問請求時首先判斷該請求使用的協議是否符合本程序的要求,即來訪請求是否使用HTTPS協議,如果不是就將其訪 問協議重定向為HTTPS,這樣就避免了客戶使用HTTP協議訪問要求使用HTTPS協議的Web資源時,看到錯誤提示信息無所適從的情況,這些處理對 Web客戶來說是透明的。

            實現思想是:首先創建一個類,該類方法可以實現自動引導Web客戶的訪問請求使用HTTPS協議,每個要求使用SSL進行傳輸的Servlets或JSPs在程序開始時調用它進行協議重定向,最后才進行數據應用處理。

            J2EE提供了兩種鏈接重定向機制。第一種機制是RequestDispatcher接口里的forward() 方法。使用MVC(Model-View-Controller)機制的Web應用通常都使用這個方法從Servlet轉移請求到JSP。但這種轉向只能 是同種協議間的轉向,并不能重定向到不同的協議。第二種機制是使用HTTPServletReponse接口里的sendRedirect()方法,它能 使用任何協議重定向到任何URL,例如:

            BeSslResponse.sendRedirect(“HTTPS://192.168.100.100/order”);

            此外,我們還需使用到Java Servlet API中的兩個方法:ServletRequest接口中的getScheme(),它用于獲取訪問請求使用的傳輸協議;HTTPUtils類中的 getRequestUrl(),它用于獲取訪問請求的URL,要注意的是該方法在Servlet 2.3中已被移到HTTPServletRequest接口。

            以下是實現協議重定向的基本步驟:

            1. 獲取訪問的請求所使用的協議;

            2. 如果請求協議符合被訪問的Servlet所要求的協議,就說明已經使用HTTPS協議了,不需做任何處理;

            3. 如果不符合,使用Servlet所要求的協議(HTTPS)重定向到相同的URL。

            例如,某Web用戶使用HTTP協議訪問要求使用HTTPS協議的資源BeSslServlet,敲入 “URL:HTTP://192.168.100.100/BeSslServlet”,在執行BeSslServlet時首先使用 ProcessSslServlet.processSsl()重定向到HTTPS://192.168.100.100/BeSslServlet,然 后 BeSslServlet與客戶瀏覽器之間就通過HTTPS協議進行數據傳輸。

            以上介紹的僅是最簡單的例子,是為了對這種重定向的方法有個初步的認識。假如想真正在Web應用中實現,還必須考慮如下幾個問題:

            ● 在Web應用中常常會用到GET或Post方法,訪問請求的URL中就會帶上一些查詢字串,這些字串是使用getRequesUrl()時獲取不到的,而 且在重定向之后會丟失,所以必須在重定向之前將它們加入到新的URL里。我們可以使用request.getQueryString()來獲取GET的查 詢字串,對于Post的Request參數,可以把它們轉換成查詢串再進行處理。

            ● 某些Web應用請求中會使用對象作為其屬性,必須在重定向之前將這些屬性保存在該Session中,以便重定向后使用。

            ● 大多數瀏覽器會把對同一個主機的不同端口的訪問當作對不同的主機進行訪問,分用不同的Session,為了使重定向后保留使用原來的Session,必須對應用服務器的Cookie 域名進行相應的設置。

            以上問題均可在程序設計中解決。

            通過程序自身實現協議重定向,就可以把要求嚴格保護的那部分資源與其他普通數據從邏輯上分開處理,使得要求使用SSL的資源和不需要使用SSL的資源各取所需,避免浪費網站的系統資源。

            posted on 2012-05-09 11:38 大龍 閱讀(1051) 評論(0)  編輯 收藏 引用

            久久久久亚洲精品天堂| 日韩精品久久久肉伦网站| 精品久久综合1区2区3区激情| 国产成人综合久久久久久| 亚洲成av人片不卡无码久久| 伊人久久大香线蕉综合影院首页| 久久精品国产亚洲麻豆| 蜜桃麻豆www久久国产精品| 久久久久久九九99精品| 欧美久久久久久午夜精品| 人妻久久久一区二区三区| 精品久久久久久无码中文野结衣| 一本久道久久综合狠狠爱| 久久精品无码专区免费| 亚洲色大成网站www久久九| 久久久久18| 国产日韩久久久精品影院首页| 婷婷五月深深久久精品| 久久人人爽人爽人人爽av| 久久九九全国免费| 99999久久久久久亚洲| 久久国产欧美日韩精品| 伊人情人综合成人久久网小说| 伊人丁香狠狠色综合久久| 久久精品无码专区免费东京热| 久久综合亚洲色HEZYO社区| 国产精品日韩欧美久久综合| 久久久久久a亚洲欧洲aⅴ| 国内精品久久久久影院免费| 久久精品国产69国产精品亚洲| 久久99精品久久久久久动态图| 亚洲午夜久久久久妓女影院 | 久久99国产精品久久| AAA级久久久精品无码片| 久久丫精品国产亚洲av| 精品久久久久久国产潘金莲| 欧美黑人激情性久久| 精品久久久久久亚洲精品| 国产精品久久久久9999高清| av国内精品久久久久影院| 国产成人无码久久久精品一|