專利名稱:安全強化裝置的制作方法
技術領域:
本發明涉及一種安全強化裝置,其能夠防止在從應用服務器發送的對于來自客戶 終端的請求的應答中包含的參數的泄漏以及篡改。
背景技術:
現在,伴隨因特網技術的發展,各種業務或者服務正作為能夠從如Web瀏覽器容 易地利用的Web應用實現。該Web瀏覽器是在可與提供Web應用的服務器(以下稱“應用 服務器”)通信連接的終端(以下稱“客戶終端”)上動作的客戶機軟件。例如,在購物站點上,使用者能夠一邊看在客戶終端上顯示的畫面一邊進行商品 的選擇或訂貨,進而也可以用信用卡進行支付等。使用者通過送貨上門的公司等接收訂購 的商品,由此利用服務。這樣,近年來,Web應用的利用者例如能夠在自家的家中享受各種服務。在利用 Web應用的場合,從客戶終端發送為利用該Web應用的請求,從應用服務器返回對于該請求 的應答。亦即,通過在客戶終端以及應用服務器之間進行請求以及應答的收發,提供各種服 務。在該請求以及應答中,包含在終端以及應用服務器中的處理所需要的各種參數等。但是,Web應用,有上述那樣的便利性,另一方面,因為本來是無狀態(不具有狀態 的)結構所以被指出有許多脆弱性,有時引起信息泄漏的事故等。這起因于在Web應用的 安裝中有不周全的地方,在Web應用的設計或者安裝時是否能夠適當地處理,依賴于進行 該設計或者安裝的技術人員的技能。將上述Web應用的脆弱性的大部分,分類為插入類、對話管理類、以及參數不正當 操作類。
所謂插入類的脆弱性,是指例如在從客戶終端對于應用服務器發送的請求中包含 的參數中插入了不正當的字符串。所謂對話管理類的脆弱性,是指例如不正當地操作了在請求或者應答中包含的對 話ID。該對話ID,例如是被用于實現客戶終端以及應用服務器之間的通信的同步。另外,所謂參數不正當操作類,是指例如篡改在從應用服務器發送的應答中包含 的參數的信息后發送請求。在這些之中,特別是對話管理類或者參數不正當操作類的脆弱性,需要來自上位 設計階段的做入,在Web應用的運用開始后發覺的場合,需要通過修改大量的程序來應對。因此,公知有根據預先給定的規則置換例如在從客戶終端對于應用服務器發送的 請求的參數(輸入參數)中包含的不正當字符串來實現無害化的技術(以下稱第一先行技 術)。另外,公開了根據預先給定的規則過濾發往服務器的訪問請求以及對應該訪問請 求的訪問應答的技術(以下稱第二先行技術(參照日本國專利公開公報2005-92564)。根 據第二先行技術,接受對于訪問請求的訪問應答,在該訪問應答中存儲的不正確的代碼殘 留的場合,將它們刪除。由此,根據第二先行技術,能夠從訪問應答中刪除預定的不正確的代碼。但是在上述的第一先行技術中,可應付的Web應用的脆弱性限于插入類,對于其 他的對話管理類以及參數不正當操作類的脆弱性不能夠應付。因此,在這些對話管理類以 及參數不正當操作類的脆弱性顯著存在的場合,需要修改大量的程序。另外,在上述的第二先行技術中,因為以不正確代碼作為對象所以也只能應付插入類的脆弱性的一部分。因此,對于對話管理類以及參數不正當操作類的脆弱性需要修改 大量的程序。
發明內容
本發明的目的在于提供一種安全強化裝置,其無需變更運轉中的應用的安裝,能 夠防止在從應用服務器發送的對于來自終端的請求的應答中包含的參數的泄漏以及篡改。根據本發明的第一形式,提供一種安全強化裝置,其可通信地與通過用戶操作的 客戶終端以及對于該客戶終端提供應用的應用服務器連接。該安全強化裝置具有規則存 儲單元,用于預先存儲表示有泄漏或者篡改的可能性的參數的條件的規則;應答接收單元, 用于從所述應用服務器接收包含根據所述用戶的操作從所述客戶終端發送的對于為利用 所述應用的請求的參數的應答;檢測單元,用于從所述接收到的應答檢測與通過在所述規 則存儲單元中存儲的規則表示的條件一致的參數;生成單元,用于在從所述接收到的應答 中檢測到與在所述規則中表示的條件一致的參數的場合,生成與該應答對應的對話對象; 對話對象存儲單元,用于存儲所述生成的對話對象;發行單元,用于發行用于唯一識別所述 生成的對話對象的對話識別信息;存儲處理單元,用于將所述檢測到的參數與所述已發行 的對話識別信息對應起來,存儲在所述對話對象存儲單元中存儲的對話對象中;參數刪除 單元,用于當在所述對話對象中存儲所述檢測到的參數時,從所述接收到的應答中刪除該 參數;嵌入單元,用于在刪除了在所述對話對象中存儲的參數的應答中嵌入所述已發行的 對話識別信息;應答發送單元,用于對于所述客戶終端發送嵌入了所述已發行的對話識別 信息的應答;請求接收單元,用于在發送嵌入了所述已發行的對話識別信息的應答后從所 述客戶終端接收對于包含該對話識別信息的該應答的請求;讀入單元,用于從所述對話對 象存儲單元中讀入通過在由所述請求接收單元接收到的請求中包含的對話識別信息識別 的對話對象;對話識別信息刪除單元,用于從該請求中刪除在通過所述請求接收單元接收 到的請求中包含的對話識別信息;恢復單元,用于在通過所述對話識別信息刪除單元刪除 了對話識別信息的請求中恢復在所述讀入的對話對象中存儲的參數;和請求發送單元,用 于對于所述應用服務器發送恢復了所述參數的請求。
圖1是用于說明連接本發明的實施形式的安全強化裝置的網絡系統的圖。圖2是以在圖1中表示的安全強化裝置60為主表示功能結構的框圖。圖3是用于說明通過應用服務器20提供的Web應用的概要的圖。圖4是表示作為應答向客戶終端10返回的訂貨畫面的顯示例。圖5是表示作為應答向客戶終端10返回的訂貨結束畫面的顯示例。圖6是表示通過應用服務器20發送應答的場合的本實施形式的安全強化裝置60的處理過程的流程圖。圖7是表示通過應答過濾器61接收的訂貨畫面的應答的一例的圖。圖8是表示在過濾規則存儲部52中存儲的過濾規則的一例的圖。圖9是表示與應答100對應的對話對象的數據結構的一例的圖。
圖10是表示通過應答過濾器61發送的應答100的一例的圖。圖11是表示通過客戶終端10發送對于通過應答過濾器61發送的應答100的請 求的場合的本實施形式的安全強化裝置60的處理過程的流程圖。圖12是表示通過請求過濾器63接收到訂貨受理請求的請求的一例的圖。圖13是表示通過請求過濾器63發送的請求200的一例的圖。
具體實施例方式下面參照附圖,說明本發明的實施形式。圖1是用于說明連接本實施形式的安全強化裝置的網絡系統的圖。如圖1所示,客戶終端10以及應用服務器(Web應用服務器)20與網絡30連接。在客戶終端10上,利用應用服務器20的客戶軟件動作。客戶軟件例如是Web瀏
IrWSB 見益。應用服務器20對于客戶終端10提供各種Web應用。客戶終端10通過利用由應用服務器20提供的Web應用的用戶(使用者)操作。 這里,說明用戶使用客戶終端10利用由應用服務器20提供的Web應用的場合的客戶終端 10以及應用服務器20之間的通信。在該場合,在客戶終端10以及應用服務器20之間,例如根據用戶的操作從在終端 10上運行的Web瀏覽器對于應用服務器20發送請求。另外,從通過應用服務器20提供的 Web應用向客戶終端10返回(發送)對于該請求的應答。進而,在有對于從Web應用發送 的應答的請求的場合,從Web瀏覽器發送該請求。這樣,通過在Web瀏覽器以及Web應用之 間收發請求以及應答,對于用戶實現通過該Web應用的各種服務。另外,在上述Web瀏覽器 以及Web應用之間收發的請求以及應答中包含各種參數。如上述在客戶終端10上運行的Web瀏覽器以及通過應用服務器20提供的Web應 用之間收發請求以及應答。但是在以下的說明中,為避免繁瑣,假定是客戶終端10以及應 用服務器20收發請求以及應答。另外,在圖1中對于客戶終端10以及應用服務器20以外的客戶終端以及應用服 務器作了省略,但是,在網絡30上連接多個客戶終端以及應用服務器。在網絡30上連接計算機40。計算機40連接硬盤驅動器那樣的外部存儲裝置50。 該外部存儲裝置50存儲通過計算機40執行的程序51。計算機40以及外部存儲裝置50構 成安全強化裝置(Web應用安全強化裝置)60。安全強化裝置60可通過網絡30連接客戶終端10以及應用服務器20。安全強化 裝置60具有中繼在上述客戶終端10以及應用服務器20之間通信的請求以及應答的功能。圖2是以在圖1中表示的安全強化裝置60為主表示功能結構的框圖。安全強化 裝置60包含應答過濾器61、對話管理部62以及請求過濾器63。在本實施形式中,假定應 答過濾器61、對話管理部62以及請求過濾器63通過圖1中表示的計算機40執行在外部存儲裝置50中存儲的程序51來實現。該程序51可在計算機可讀取的存儲介質中預先存儲 后進行分發。另外,該程序51也可以通過網絡30下載到計算機40。另外,安全強化裝置60具有過濾規則存儲部52以及對話對象存儲部53。在本實施形式中,過濾規則存儲部52以及對話對象存儲部53,例如存儲在外部存儲裝置50中。另外,如上述,安全強化裝置60在客戶終端10以及應用服務器20之間中繼請求 以及應答。在過濾規則存儲部52中,例如,預先存儲表示有泄漏或者篡改的可能性的參數的 條件的過濾規則。在過濾規則存儲部52中存儲的過濾規則,用于從(通過)上述的應用服 務器20 (提供的Web應用)發送的應答中檢測參數。關于該過濾規則的數據結構的詳情后 面敘述。在對話對象存儲部53中存儲與從應用服務器20發送的應答對應的對話對象。應答過濾器61從應用服務器20接收與根據用戶的操作從用戶終端10發送的請 求對應的應答。如上所述,應答中包含參數。在應答中包含的參數,例如包含對于的應答的 請求的發送目的地URL (Uniform Resource Location...在本說明書中把發送目的地URL 記為“連接目的地識別信息”)、該參數的參數類型以及參數名。應答過濾器61,從接收到的應答檢測與通過在過濾規則存儲部52中存儲的過濾 規則表示的條件一致的參數。此時,應答過濾器61根據在接收到的應答中包含的URL、參數 類型以及參數名執行檢測處理。應答過濾器61,在與接受到的應答對應的對話對象中存儲檢測到的參數(與通過 在過濾規則存儲部52中存儲的過濾規則表示的條件一致的參數)。應答過濾器61通過對 話管理部62執行存儲處理。如后述,與接受到的應答對應的對話對象被存儲在對話對象存 儲部53中。應答過濾器61在刪除了檢出的參數的應答中嵌入通過后述的對話管理部62發行 的對話ID。應答過濾器61對于客戶終端10發送嵌入了通過對話管理部62發行的對話ID的應答。 對話管理部62執行對于對話對象存儲部53的各種處理。對話管理部62,在通過應答過濾器61從應答中檢出與通過在過濾規則存儲部52 中存儲的過濾規則表示的條件一致的參數的場合,判定在過濾規則存儲部52中是否存儲 有與該應答對應的對話對象。亦即,對話管理部62判定是否生成了與通過應答過濾器61 接受到的應答對應的對話對象。對話管理部62,在未生成與通過應答過濾器61接受到的應答對應的對話對象的 場合,生成與該應答對應的對話對象。該生成的對話對象,被存儲在對話對象存儲部53中。對話管理部62,當生成與通過應答過濾器61接受到的應答對應的對話對象時,發 行用于唯一識別該對話對象的獨自的對話ID (對話識別信息)。該發行的對話ID,被存儲 在通過對話管理部62生成的對話對象(通過該對話ID識別的對話對象)中。另外,對話管理部62如后述執行在對話對象存儲部53中存儲的對話對象的廢棄 處理。請求過濾器63如上述從客戶終端10接收通過應答過濾器61發送的對于應答的請求。該接受到的請求例如是根據用戶的操作對于應用服務器20發送的請求。另外,在該 接受到的請求中,包含在通過應答過濾器61發送的應答中嵌入的對話ID (通過對話管理部 62發行的對話ID)。 請求過濾器63,從對話對象存儲部53中讀入通過在接受到的請求中包含的對話 ID識別的對話對象(存儲有該對話ID的對話對象)。請求過濾器63,當讀入了通過在接受到的請求中包含的對話ID識別的對話對象 時,從該請求中刪除該對話ID。請求過濾器63,在接受到的請求內恢復在讀入的對話對象中存儲的參數。當在接 受到的請求內恢復了在對話對象中存儲的參數時,通過對話管理部62廢棄該對話對象。請求過濾器63對于應用服務器20發送恢復了參數的請求。另外,請求過濾器63僅在在接收到的請求中包含通過對話管理部62發行的對 話ID(在通過應答過濾器61發送的應答中嵌入的對話ID)的場合工作。例如在客戶終端 10 (上運行的Web瀏覽器)以及(通過)應用服務器20 (提供的應用)之間最初在從該客 戶終端10發送的請求中不包含通過對話管理部62發行的對話ID。在接收到這樣的請求的 場合,請求過濾器63,不執行特別的處理,直接向應用服務器20中繼該請求。此時,例如也可以是預先準備用于檢查在請求中包含的參數(請求參數)的值的 規則、請求過濾器63根據該規則過濾該參數的值的結構。下面說明本實施形式的安全強化裝置60的動作。這里,參照圖3,說明為說明安 全強化裝置60的動作而使用的通過應用服務器20提供的web應用的概要。假定這里說明 的web應用是接收來自用戶的商品的訂貨的受理服務。另外,在圖3 (中表示的web應用) 中,表示用于說明安全強化裝置60的動作的最小限度的內容。如圖3所示,首先,客戶終端10例如指定URL、向(通過)應用服務器20 (提供的 Web應用)發送請求(訂貨請求)(步驟Si)。此時,用戶可以從在客戶終端10上運行的 Web瀏覽器指定URL。接著,應用服務器20,作為對于通過客戶終端10發送的請求的應答向該客戶終端 10返回訂貨畫面(步驟S2)。這里,圖4表示作為應答向客戶終端10返回的訂貨畫面在該客戶終端10上顯示 的場合的一例。在圖4表示的例子中,在訂貨畫面中,顯示商品名、該商品的單價、訂購該商 品的數(訂購數)的輸入欄(輸入格式)、發送按鈕以及取消按鈕。當顯示圖4表示的訂貨畫面時,操作客戶終端10的用戶,從在該客戶終端10上運 行的Web瀏覽器輸入訂購數,按壓(點擊)發送按鈕。由此,包含訂貨內容(訂購數)的請 求(訂貨受理請求)從客戶終端10對于應用服務器20發送(步驟S3)。在(通過)應用服務器20 (提供的Web應用)中根據從客戶終端10發送的請求 執行訂貨的受理處理。由此,作為對于從客戶終端10發送的請求的應答,向客戶終端10返 回訂貨結束畫面(步驟S4)。這里,圖5表示作為應答向客戶終端10返回的訂貨結束畫面在該客戶終端10上 顯示的場合的一例。在圖5表示的例子中,在訂貨結束畫面中,顯示商品名、該商品的單價、 在上述訂貨畫面中輸入的訂購數以及請求金額。另外,從商品的單價以及訂購數計算在訂 貨結束畫面中顯示的請求金額,。
在以下的說明中,假定在客戶終端10以及應用服務器20之間收發上述圖3表示 的請求以及應答進行說明。亦即,本實施形式的安全強化裝置60中繼圖3表示的請求以及
應答。首先,參照圖6的流程圖,說明在通過應用服務器20發送應答的場合本實施形式 的安全強化裝置60的處理過程。這里,說明通過應用服務器20發送在上述圖3中說明了 的訂貨畫面的應答的場合。該場合,在安全強化裝置60中包含的應答過濾器61中,根據在過濾規則存儲部52 中預先存儲的(已設定的)過濾規則執行過濾處理。首先,應答過濾器61接收通過應用服務器20發送的應答(步驟Sll)。在該應答 中,例如包含對于該應答的請求的發送目的地URL以及參數。該URL,例如根據用戶的操作 從Web瀏覽器指定。另外,在參數中,包含該參數的參數類型、參數名以及參數值。這里,圖7表示通過應答過濾器61接收的訂貨畫面的應答的一例。順另外,在實 際的應答的內容中表示說明所需要的最小限度的內容。在圖7表示的應答100中,第一行的“SESSI0N_ID”,表示對于從客戶終端10發送 的請求應用服務器20發行的對話ID。在(通過)應用服務器20 (提供的Web應用)以及 客戶終端10(上運行的Web瀏覽器)之間,使用該對話ID實現通信的同步。在該第一行中, “Cookie”是參數類型,“SESSI0N_ID”是參數名,“012”是參數值。亦即,在第一行中顯示包 含參數類型“Cookie”、參數名“SESSI0N_ID”以及參數值“012”的參數。第二行的“Content-length”以字節單位表示其后接續的數據的長度。另外,在本 實施例中,把換行代碼計數為1個文字求數據長度。第四行中包含的“action =“http://hostname/order, do””,表示在上述圖4的訂 貨畫面中點擊發送按鈕時的數據的發送目的地URL "http://hostname/order, do”。第8 行 第 10 行的 “input type = “hidden””稱為 Hidden 參數。該 Hidden 參 數作為信息向客戶終端10發送,但是在該Web瀏覽器中的畫面上不顯示。因此,有時安裝 Hidden參數以使嵌入不對用戶表示(不顯示)但是希望在畫面間移交的信息,而成為信息 的泄漏或者篡改等的對象。另外,在第8行的Hidden參數中,“Hidden”是參數類型,“SCREEN_ID”是參數名, “s001”是參數值。亦即在第8行中,表示包含參數類型“Hidden”、參數名“SCREEN_ID”以 及參數值“sOOl”的參數(Hidden參數)。在第9行的Hidden參數中,“Hidden”是參數類型,“USER_ID”是參數名,“taro” 是參數值。亦即在第9行中,表示包含參數類型“Hidden”、參數名“USER_ID”以及參數值 "taro"的參數(Hidden參數)。另外,在第10行的Hidden參數中,“Hidden”是參數類型,“TOICE”是參數名, “12000”是參數值。亦即在第10行中,表示包含參數類型“Hidden”、參數名“PRICE”以及 參數值“12000”的參數(Hidden參數)。另夕卜,在參數類型中,在上述的“Cookie”以及“Hidden”以外存在“GET”等。以下在上述的步驟Sll中,對于接收到圖7表示的應答100的情況進行說明。再次返回圖6說明。應答過濾器61,當接收到應答100時,讀入在過濾規則存儲部 52中存儲的過濾規則(步驟S12)。此時,應答過濾器61讀入在過濾規則存儲部52中存儲的過濾規則中的一個。這里,圖8表示在過濾規則存儲部52中存儲的過濾規則的一例。如圖8所示,(通 過)過濾規則(表示的條件),至少包含URL模式、參數類型以及參數名。在本說明書中, URL模式是“接續目的地識別模式”的一例,例如通過正規表現等的表記方法給出。在圖8表示的例子中,在過濾規則存儲部52中存儲過濾規則521 526。過濾規則521包含URL模式“.*/order Y. do. *”、參數類型“COOKIE”以及參數名 “SESSI0N_ID”。過濾規則522包含URL模式“.*/order Y. do. *”、參數類型“HIDDEN”以及參數名 “SCREEN_ID”。過濾規則523包含URL模式“.*/order Y. do. *”、參數類型“HIDDEN”以及參數名 “USER_ID”。
過濾規則524包含URL模式“.*/order Y. do. *”、參數類型“HIDDEN”以及參數名 “PRICE”。過濾規則525包含URL模式“.*/userinfo Y. do. *”、參數類型“GET”以及參數名 "CLASS,,。另外,過濾規則526包含URL模式“.*/order Y. do. *”、參數類型“GET”以及參數 名"ADDRESS”。再次返回圖6進行說明。另外,在上述步驟S12中對于應答過濾器61讀入了圖8 表示的過濾規則521進行說明。應答過濾器61,判定在上述步驟Sll接收到的應答100中包含的URL是否與構成 讀入的過濾規則521的URL模式一致(步驟S13)。在過濾規則521中包含的URL模式是“.*/order Y. do. *”。這表示以任意的字符 串開始、包含字符串“/order, do”、以任意的字符串結束的字符串(URL)的模式。另外,在任 意的字符串中包含空字符串。另一方面,在應答100中包含的URL是“http://hostname/ order, do,,。在該場合,應答過濾器61判定在應答100中包含的URL與在過濾規則521中包含 的URL模式一致(步驟S13的YES)。接著,應答過濾器61判定在應答100中是否存在包含在讀入的過濾規則521中包 含的參數類型以及參數名的參數(與該參數類型以及參數名一致的參數)(步驟S14)。在過濾規則521中包含的參數類型是“C00KIE”,參數名是“SESSI0N_ID”。另一方 面,在圖7表示的應答100的第一行中存在包含參數類型"Cookie(COOKIE) ”以及參數名 “SESSI0N_ID” 的參數。在該場合,應答過濾器61判定在應答100中存在包含在過濾規則521中包含的參 數類型以及參數名的參數(步驟S14的YES)。在該場合,應答過濾器61從應答100中把包含在過濾規則521中包含的參數類型 以及參數名的參數(圖7中應答100的第一行的參數)作為與過濾規則521 —致的參數檢
出ο在從應答100中檢出與過濾規則521 —致的參數的場合,對話管理部62,判定與 該應答100對應的對話對象是否生成完畢(步驟S15)。對話管理部62參照對話對象存儲部53執行判定處理。對話對象如后述,例如在從應答100中最初檢出參數時生成,并存儲 在對話對象存儲部53中。這里,通過應答過濾器61檢出的參數,因為是從應答100檢出的最初的參數,所以 不生成與該應答100對應的對話對象。因此,對話管理部62判定為與應答100對應的對話 對象未生成完畢(步驟S15的NO)。
在判定為對話對象未生成完畢的場合,對話管理部62生成與應答100對應的對話 對象(步驟S16)。對話管理部62在對話對象存儲部53中存儲生成的對話對象。對話管理部62發行用于唯一識別生成的對話對象(在對話對象存儲部53中存儲 的對話對象)的對話ID (步驟S17)。這里,通過對話管理部62發行的對話ID例如假定是 “3jUZ0UAwk”。該對話ID,與上述通過應用服務器20發行的對話ID “012”比較,是難以預 測的堅固的對話ID。通過應用服務器20發行的對話ID,存儲在通過該對話ID唯一識別的 對話對象中。接著,應答過濾器61,在對話對象存儲部53中存儲的對話對象中存儲檢出的參數 (與過濾規則521 —致的參數)(步驟S18)。該對話對象是與在上述步驟S16生成的應答 100對應的對話對象。另外,在對話對象中存儲的參數中,包含參數類型、參數名以及參數 值。這里,因為圖7表示的應答100的第一行是Cookie參數,所以作為參數類型,在對話對 象中存儲“COOKIE (Cookie) ”。另外,作為參數名,在對話對象中存儲“SESSI0N_ID = 012”的 “=”左側的“SESSI0N_ID”。作為參數值,在對話對象中存儲“SESSI0N_ID = 012”的“=” 右側的“012”。應答過濾器61,從應答100中刪除檢出的參數(步驟三9)。這里,從圖7表示的 應答100中刪除字符串“SESSI0N_ID = 012”。這里,判定是否對于在過濾規則存儲部52中存儲的全部過濾規則執行了上述步 驟S12及以后的處理(步驟S20)。在判定為對于全部過濾規則未執行處理的場合(步驟S20的N0),返回步驟S12重
復處理。另外,在上述步驟S13判定為在應答100中包含的URL與在過濾規則中包含的URL 模式不一致的場合,返回步驟S12重復處理。另外,在步驟S14判定為在過濾規則中包含的 包含參數類型以及參數名的參數在應答100中不存在的場合,也返回步驟S12重復處理。這里,因為關于在對話對象存儲部53中存儲的過濾規則521執行了步驟S12及以 后的處理,所以接著關于過濾規則522執行處理。這里,簡單說明關于過濾規則522的步驟S12及以后的處理。在過濾規則522中包含的URL模式是“.*/orderY.do. *”。另一方面,在應答100 中包含的 URL 是“http://hostname/order, do”。因此,在步驟S13判定為在應答100中包含的URL與在過濾規則存儲部52中包含 的URL模式一致。另外,在過濾規則522中包含的參數類型是“HIDDEN”,參數名是“SCREEN_ID”。另 一方面,在應答100的第8行中存在包含參數類型“Hidden (HIDDEN) ”以及參數名“SCREEN_ ID”的參數(Hidden參數)。因此,在步驟S14判定為在過濾規則522中包含的包含參數類型以及參數名的參數在應答100中存在。因此,包含在過濾規則522中包含的參數類型以及參數名的參數(圖7中表示的 應答100的第8行的參數),作為與過濾規則522 —致的參數從應答100中檢出。此時,與應答100對應的對話對象已經生成完畢。因此,在步驟S17判定為與應答 100對應的對話對象已經生成完畢。在該場合,不執行步驟S16以及步驟S17的處理,執行 步驟S18的處理。在步驟S18,把檢出的參數(與過濾規則522—致的參數)存儲在于對話對象存儲 部53內存儲的對話對象(與應答100對應的對話對象)中。另外,在步驟S19,從應答100中刪除檢出的參數。這樣,對于在過濾規則存儲部52中存儲的全部過濾規則順序執行步驟S12及以下 的處理。當對于在過濾規則存儲部52中存儲的全部過濾規則執行處理時,在與應答100對 應的對話對象中,存儲從該應答100中檢出的全部參數(例如與過濾規則522 526 —致 的參數)。另外,雖然省略了詳細的說明,不過在圖7表示的應答100中,存在與圖8表示的 過濾規則521 526中過濾規則521 524 —致的參數,但是不存在與過濾規則525 526 一致的參數。亦即,在對于過濾規則521 526的全部執行步驟S12及以下的處理的場合, 在與應答100對應的對話對象中存儲與過濾規則521 524 —致的參數。另外,在雖然在圖7表示應答100中不存在,但是即使在參數類型是“GET”的過濾 規則525 (或者526)中,如果在應答100中存在該參數類型“GET”以及參數名“CLASS” (或 者“ADDRESS”)一致的參數(GET參數)則檢出該參數,在對話對象中存儲。在應答100中 包含的 URL 例如是 “http//hostname/order, do ? SCREEN_ID = sOOl” 的場合,在對話對 象中存儲把參數類型作為“GET”、把“SCREEN_ID = sOOl”的“=”的左側(SCREEN_ID)作為 參數名、把該“=”的右側(sOOl)作為參數值的參數。這里,圖9表示與應答100對應的對話對象的數據結構的一例。如圖9所示,在對話對象中,至少存儲內部種類、參數。在該參數中,包含參數類 型、參數名以及參數值。內部種類,表示對話對象內部的參數的種類。在內部種類中,包含“SESID”以及 “PARAM”。“SESID”表示通過對話管理部62發行的對話ID。“PARAM”表示通過應答過濾器 61檢出的參數(與過濾規則一致的參數)。在圖9表示的例子中,在對話對象中,存儲內部種類“SESSID”、參數類型 “COOKIE”、參數名“FILTER_ID”以及參數值“3juz0uAwk”。由此,表示通過對話管理部62發 行的對話ID的參數類型是“C00KIE”,參數名是“FILTER_ID”,參數值是“3 juzOuAwk”通過該對話管理部62發行的對話ID的參數類型,例如根據在應答100的管理中 使用的信息(ID等)的參數類型來決定。這里,因為在應答100中例如存在“Set-Cookie”, 所以通過對話管理部62發行的對話ID的參數類型成為“Cookie”。作為通過對話管理部62發行的對話ID的參數名,使用與在通過應用服務器20提 供的Web應用中使用的參數名不重復的參數名。另外,作為通過對話管理部62發行的對話ID的參數值,使用與通過應用服務器20 發行的對話ID(在應答100中包含的對話ID)比較難于預測的堅固的值。
同樣,在對話對象中,存儲內部種類“PARAM”、參數類型“COOKIE”、參數名 “SESSI0N_ID”以及參數值“012”。由此表示從應答100檢出的參數的參數類型是“COOKIE”、 參數名是“SESSI0N_ID”以及參數值“012”是“012”。從該應答100中檢出的參數是與圖8 中表示的過濾規則521 —致的參數。 在對話對象中,存儲內部種類“PARAM”、參數類型“HIDDEN”、參數名“SESSI0N_ID” 以及參數值“sOOl”。由此表示從應答100檢出的參數的參數類型是“HIDDEN”,參數名是 “SESSI0N_ID”以及參數值是“sOOl”。從該應答100中檢出的參數是與圖8中表示的過濾 規則522 —致的參數。在對話對象中,存儲內部種類“PARAM”、參數類型“HIDDEN”、參數名“USER_ID ” 以及參數值“taro”。由此表示從應答100檢出的參數的參數類型是“HIDDEN”,參數名是 “USER_ID”以及參數值是“taro”。從該應答100中檢出的參數是與圖8中表示的過濾規則
523一致的參數。另外,在對話對象中,存儲內部種類“PARAM”、參數類型“HIDDEN”、參數名“PRICE ” 以及參數值“12000”。由此表示從應答100檢出的參數的參數類型是“HIDDEN”,參數名是 “PRICE”以及參數值是“12000”。從該應答100中檢出的參數是與圖8中表示的過濾規則
524一致的參數。再次返回圖6,在步驟S20判定為對于全部過濾規則執行完上述步驟S12及以下 的處理的場合,應答過濾器61在應答100中嵌入通過對話管理部62發行的對話ID(步 驟S21)。具體說,把通過對話管理部62發行的對話ID作為應答100的Cookie參數 "Set-Cookie :FILTER_SID = 3juz0uAwk”嵌入。另外,通過對話管理部62發行的對話ID 的嵌入方式,也可以是Cookie以外的方式,作為Hidden參數、GET參數嵌入。需要使與圖9 表示的內部種類“SESSID”的參數類型一致。這里,在上述的步驟S19從應答100中刪除參數。因此,在上述步驟Sll接收到的 應答100和刪除了參數后的應答100中,該應答100的數據長度縮短。因此,應答過濾器61 把應答100中的表示數據長度的“content-iength”(的值)更新為與上述參數的刪除對應 的適當的值(步驟S22)。應答過濾器61對于終端10發送更新了“Content-length”的應答100 (步驟S23)。這里,圖10表示通過應答過濾器61發送的應答100的一例。這里,適當比較圖7 的應答(處理前的應答)100進行說明。在圖10表示的應答100中,第一行的“FILTER_SID = 3juz0uAwk”是通過對話管 理部62發行的對話ID。亦即,在圖10表示的應答100中,圖7表示的應答100的第一行的 “SESSION-ID”被替換為通過對話管理部62發行的對話ID。由此,即使是應用服務器20發行了脆弱的對話ID(圖7中表示的應答100中的“SESSION-ID = 012”)的場合,通過替換 為難于預測的堅固的對話ID(圖10中表示的應答中的“FILTER_SID = 3juzOuAwk”),例如 能夠防止濫用對話ID的冒充等。另外,在圖10表示的應答100中,第二行的“Content-length”由應答過濾器61更 新為刪除參數后的數據長度。在圖10表示的例子中根據參數的刪除把“Content-length” 更新為“221”。另外,在圖10表示的應答100中,與圖7表示的應答100比較,刪除了 Hidden參數(圖7中表示的應答100的第8行 第10行)。亦即,對于通過應用服務器20提供的Web應用的畫面轉移來說是必要的、但是對 于在客戶終端10上運行的Web瀏覽器在Hidden參數中包含不需要的信息的場合,因為該 信息不向客戶終端10發送,所以可以防止該信息的泄漏或者篡改。具體說,在向客戶終端 10發送的圖10中表示的應答100中,因為例如刪除了圖7中表示的應答100的第10行的 參數(PRICE參數),所以能夠防止價格信息的篡改等。另外,在上述步驟S20中在判定為對于全部過濾規則已執行上述步驟S12及以下 的處理的場合,對于執行步驟S21的處理進行了說明,但是在與該過濾規則一致的參數在 應答100內不存在(亦即一個參數也檢測不出)的場合結束處理。下面參照圖11的流程圖,說明如上述通過客戶終端10發送對于通過應答過濾器發送的應答的請求的場合的本實施形式的安全強化裝置60的處理過程。這里,說明通過客 戶終端10發送在上述圖3中已說明的訂貨受理請求的請求的場合。首先,在安全強化裝置60中包含的請求過濾器63接收通過客戶終端10發送的請求(步驟S31)。在該請求中,包含在通過上述的應答過濾器61發送的應答100中嵌入的對 話ID (通過對話管理部62發行的對話ID)。這里,圖12表示通過請求過濾器63接收到訂貨受理請求的請求的一例。圖12表 示的請求200,在上述圖4表示的訂貨畫面中通過用戶操作客戶終端10在按下該訂貨畫面 的發送按鈕的場合從該客戶終端10發送。圖12表示的請求200的第一行,是包含從客戶終端10 (上運行的Web瀏覽器)發 送的對話ID的Cookie。請求200的第一行的“FILTER_SID = 3 juzOuAwk”,是在通過應答 過濾器61發送的應答100中嵌入的(更換的)對話ID。請求200的第二行的“Content-length”,用字節單位表示其后接續的數據的數據長度。另外,請求200的第四行,是表示從在客戶終端10上運行的Web瀏覽器輸入的 訂購數以及按下了圖4中的訂貨畫面的發送按鈕這一事實的參數。請求200的第四行的 "ORDER = 10”,表示要求訂購10個。下面,對于在上述的步驟S31接收圖12表示的請求200 —事進行說明。再次返回圖11,請求過濾器63,取得在接收到的請求200中包含的對話ID(步驟 S32)。請求過濾器63,作為對話ID從請求200中取得“FILTER_SID = 3 juzOuAwk”。在該 "FILTER_SID = 3 juzOuAwk,,中,"FILTER_SID,,是參數名,“3 juzOuAwk,,是參數值。接著,請求過濾器63從對話對象存儲部53中讀入與已取得的對話ID對應的對話 對象(步驟S33)。請求過濾器63讀入與內部種類“SESSID”對應起來存儲了已取得的對話 ID的參數名以及參數值的對話對象。亦即,讀入與下述這樣的參數名以及參數值一致的對 話對象,該參數名以及參數值是通過請求過濾器63取得的對話ID的參數名以及參數值與 內部種類“ SESSID ”對應的參數名以及參數值。具體說,讀入與內部種類“SESSID”對應存儲參數類型“COOKIE”、從請求200取得 的“FILTER_SID = 3 juzOuAwk” 的參數名 “FILTER_SID” 以及參數值“3 juzOuAwk” 的對話對 象。亦即從對話對象存儲部53讀入上述圖9中表示的對話對象。請求過濾器63從該請求200中刪除在接收到的請求200中包含的對話ID (步驟S34)。此時,刪除與讀入的對話對象的內部種類“SESSID”對應的參數類型、參數名以及參 數值一致的項目。亦即因為與“SESSID”對應的參數類型是“COOKIE”,所以從該請求200中 刪除圖12中表示的請求200的第一行的Cookie參數“FILTER_SID = 3juz0uAwk” 。請求過濾器63,在讀入的對話對象內取得與內部種類“PARAM”對應存儲的參數 (參數類型、參數名以及參數值)(步驟S35)。此時,請求過濾器63通過對話管理部62取 得參數。與內部種類“PARAM”對應起來在對話對象中存儲的參數,是在通過請求過濾器63 接收的請求200內恢復(再構成)的參數。請求過濾器63取得在讀入的對話對象中存儲的參數中的一個。這里,假定從圖9 表示的對話對象中取得與內部種類“PARAM”對應在對話對象內存儲的(包含)參數類型 “COOKIE”、參數名“SESSI0N_ID”以及參數值“012” (的參數)。請求過濾器63在請求200內恢復取得的包含參數類型“COOKIE”、參數名 “SESSI0N_ID”以及參數值“012”的參數。在該場合,因為參數類型是“C00KIE”,所以把參數名“SESSI0N_ID”作為“=”的左 側、把參數值“012”作為該“=”的右側形成的字符串SESSI0N_ID = 012”作為Cookie參 數在請求200中恢復。接著判定在通過請求過濾器63讀入的對話對象中存儲的全部參數是否已在請求 200內恢復(步驟S37)。亦即判定與內部種類“PARAM”對應在對話對象內存儲的全部參數 是否已恢復。在判定為在對話對象中存儲的全部參數未在請求200內恢復的場合(步驟S37的 N0),返回步驟S35重復處理。亦即在對話對象中存儲的全部參數恢復之前一直重復處理。這里,在圖9表示的對話對象中應該在請求200內恢復的參數,如上述是與內部種 類“PARAM”對應的參數。亦即在圖9表示的對話對象中存在4個應該在請求200內恢復的 參數。在請求過濾器63中,恢復這些參數,作為對于Web應用的請求再構成。下面,說明在上述步驟S35取得與內部種類“PARAM”對應在對話對象中存儲的參 數類型“HIDDEN”、參數名“SCREEN_ID”以及參數值“s001”的場合。在該場合,因為參數類 型是“HIDDEN”,所以把參數名“SCREEN_ID”作為“=,,的左側、把參數值“ s001 ”作為該“=,, 的右側形成的字符串“SCREEN_ID = sOOl”作為Hidden參數在請求200內恢復。下面,說明在步驟S35取得與內部種類“PARAM”對應在對話對象中存儲的參數類 型“HIDDEN”、參數名“USER_ID”以及參數值“taro”的場合。在該場合,因為參數類型是 “HIDDEN”,所以把參數名“USER_ID”作為“=”的左側、把參數值“taro”作為該“=”的右 側形成的字符串“USER_ID = taro”作為Hidden參數在請求200內恢復。另外,說明在步驟S35取得與內部種類“PARAM”對應在對話對象中存儲的參數 類型“HIDDEN”、參數名“PRICE”以及參數值“12000”的場合。在該場合,因為參數類型是 “HIDDEN”,所以把參數名“PRICE”作為“=”的左側、把參數值“12000”作為該“=”的右側 形成的字符串“PRICE = 12000”作為Hidden參數在請求200內恢復。另外,雖然未存儲在圖9表示的對話對象中,但是在取得參數類型是“GET”的參 數的場合,作為GET參數通過在URL上附加被恢復。例如在取得參數類型“GET”、參數名 “SCREEN_ID” 以及參數值“sOOl” 的場合,例如設想 URL 是“http//sampleshost/order. do ? ORDER = 10” 的場合。在該場合,像 “http//sampleshost/order. do ? ORDER =10&SCREEN_ID = sOOl”那樣恢復 GET 參數。
在如上那樣地執行恢復處理、判定為與內部種類“PARAM”對應在對話對象中存儲 的全部參數已在請求200內恢復的場合(步驟S37的YES),請求過濾器63從對話對象存儲 部53中廢棄讀入的對話對象(步驟S38)。此時,請求過濾器63通過對話管理部62廢棄對 話對象。如上述在請求200中恢復了參數。因此,在上述步驟S31在接收到的請求200和 恢復了參數后的請求200中,請求200的數據長度增長。因此,請求過濾器63把表示請求 200中的數據長度的“Contenet-length” (的值)更新為與上述的參數的恢復對應的適當 的值(步驟S39)。請求過濾器63對于應用服務器200發送更新了 “Contenet-length”的請求 200 (步驟 S40)。這里,圖13表示通過請求過濾器63發送的請求200的一例。這里,適當與圖12 表示的請求(處理前的請求)200比較進行說明。在圖13表示的請求200中,在第一行內恢復了 Cookie參數。這是基于與內部種 類“PARAM”對應在對話對象內存儲的參數類型“COOKIE”、參數名“SESSI0N_ID”以及參數值 “012”恢復Cookie參數的結果。另外,在圖13表示的請求200中,在第四行內恢復Hidden參數。“SCREEN_ ID = s001”,是基于圖9表示的與內部種類“PARAM”對應在對話對象內存儲的參數類 型“HIDDEN”、參數名“ SCREEN_ID ”以及參數值“ s001 ”恢復Hidden參數的結果。“USER_ ID = taro”,是基于圖9表示的與內部種類“PARAM”對應在對話對象內存儲的參數類型 “HIDDEN”、參數名“USER_ID”以及參數值“taro”恢復Hidden參數的結果。另外,"I3RICE =12000”,是基于圖9表示的與內部種類“PARAM”對應在對話對象內存儲的參數類型 “HIDDEN”、參數名“PRICE”以及參數值“ 12000”恢復Hidden參數的結果。這樣通過向應用服務器20發送參數被恢復了的請求200,即使在通過該應用服務 器20提供的Web應用已經結束開發而開始運用的場合,也不會對于該Web應用給予影響。如上所述在本實施形式中,在從應用服務器20發送的應答中包含的參數中,在對 話對象內臨時存儲與在過濾規則存儲部52中存儲的過濾規則一致的參數。另外,在本實施 形式中,代替通過應用服務器20發行的對話ID而嵌入難于預測的堅固的獨自的對話ID,而 且向客戶終端10發送刪除了在該對話對象中存儲的參數的應答。另外,在本實施形式中, 在嵌入了獨自的對話ID而且對于參數被刪除了的應答從客戶終端10發送請求的場合,在 該請求中恢復在對話對象中存儲的參數,對于應用服務器20發送。由此,在本實施形式中,在應答中在客戶終端10上運行的Web瀏覽器中不使用、但 是在通過應用服務器20提供的web應用的畫面間需要移交的、有信息泄漏或者篡改的可能 的參數(例如價格信息或者個人信息),不向客戶終端10發送。因此,在本實施形式中,因 為能夠防止在來自應用服務器20的應答中包含的參數的泄漏以及篡改,所以在通過該應 用服務器20提供的Web應用中能夠安全地繼續對話。進而,在本實施形式中,因為不用修改已經開發的Web應用的程序就可以實現,所 以即使在該Web應用的運用開始后問題才顯現出來那樣的場合也能夠不變更運轉中的Web 應用的安裝解決問題。
另外,在本實施形式中,說明了在一個應答中包含一種輸入格式的情況,但是即使 例如在一個應答中包含多種輸入格式的場合,通過與對話ID —起嵌入該格式的識別符,也 能夠對于本實施形式的安全強化裝置60的結構不加變更而容易地實現。另外,在通過本實施形式的安全強化裝置60的應答過濾器61向客戶終端10發送 應答后,監視從客戶終端10發送的對于該應答的請求,在預定的期間(時間)內不從該客 戶終端10發送該請求(亦即通過安全強化裝置60的請求過濾器63不接受該請求)的場 合,也可以采用廢棄(亦即超時處理)與在對話對象存儲部53中存儲的與該應答對應的對 話對象的結構。由此,在對話對象中存儲參數、發送應答的場合,盡管不發送對于該應答的 請求,但是也可以避免積累該對話對象這樣的事態。另外,在本實施形式中,對于在客戶終端10以及應用服務器20之間安全強化裝置 60中繼請求以及應答進行了說明,但是也可以是該安全強化裝置60(的各功能)被包含在 應用服務器20內的結構。另外,本申請發明不限于上述實施形式一成不變,而在實施階段在不脫離其要義 的范圍內可以將結構要素進行變形來具體化。另外通過適當組合在上述實施形式中公開的 多種結構要素能夠形成各種發明。例如,也可以從在實施形式中表示的全部結構要素中刪 除若干結構要素。
權利要求
一種安全強化裝置,其可通信地與通過用戶操作的客戶終端以及對于該客戶終端提供應用的應用服務器連接,其特征在于,具有規則存儲單元,其預先存儲表示有泄漏或者篡改的可能性的參數的條件的規則;應答接收單元,其從所述應用服務器接收應答,該應答包含對于根據所述用戶的操作從所述客戶終端發送的為利用所述應用的請求的參數;檢測單元,其從所述接收到的應答檢測與通過在所述規則存儲單元中存儲的規則表示的條件一致的參數;生成單元,其在從所述接收到的應答中檢測到與在所述規則中表示的條件一致的參數的場合,生成與該應答對應的對話對象;對話對象存儲單元,其存儲所述生成的對話對象;發行單元,其發行用于唯一識別所述生成的對話對象的對話識別信息;存儲處理單元,其將所述檢測到的參數與所述已發行的對話識別信息對應起來,存儲在所述對話對象存儲單元中存儲的對話對象中;參數刪除單元,其當將所述檢測到的參數存儲在所述對話對象中時,從所述接收到的應答中刪除該參數;嵌入單元,其在刪除了在所述對話對象中存儲的參數的應答中嵌入所述已發行的對話識別信息;應答發送單元,其對于所述客戶終端發送嵌入了所述已發行的對話識別信息的應答;請求接收單元,其在發送嵌入了所述已發行的對話識別信息的應答后,從所述客戶終端接收對于包含該對話識別信息的該應答的請求;讀入單元,其從所述對話對象存儲單元中讀入通過在由所述請求接收單元接收到的請求中包含的對話識別信息識別的對話對象;對話識別信息刪除單元,其從請求中刪除在通過所述請求接收單元接收到的該請求中包含的對話識別信息;恢復單元,其在通過所述對話識別信息刪除單元刪除了對話識別信息的請求中恢復在所述讀入的對話對象中存儲的參數;和請求發送單元,其對于所述應用服務器發送恢復了所述參數的請求。
2.根據權利要求1所述的安全強化裝置,其特征在于,還具有廢棄單元,其在刪除了所述對話識別信息的請求中恢復了在所述讀入的對話對 象中存儲的參數的場合,廢棄該對話對象。
3.根據權利要求1所述的安全強化裝置,其特征在于,還具有廢棄單元,其在對于所述客戶終端發送了嵌入了所述發行的對話識別信息的應 答后,在預定的期間內未從客戶終端接收到對于該發送的應答的請求的場合,廢棄在所述 對話對象存儲單元中存儲的對話對象。
4.根據權利要求1所述的安全強化裝置,其特征在于,通過在所述規則存儲單元中存儲的規則表示的條件,包含連接目的地識別模式、參數 類型以及參數名,所述接收到的應答還包含涉及對于該應答的請求的發送目的地的連接目的地識別信息 在所述接收到的應答中包含的參數,包含該參數的參數類型以及參數名, 所述檢測單元包含下述的單元判定在所述接收到的應答中包含的連接目的地識別信息是否與在通過在所述規則存儲單元中存儲的規則表示的條件中包含的連接目的地識別模式一致的單元;在判定為在所述接收到的應答中包含的連接目的地識別信息與所述連接目的地識別 模式一致的場合,判定在所述接收到的應答中是否包含有下述的參數的單元,所述參數包 含在通過在所述規則存儲單元中存儲的規則表示的條件中包含的參數類型以及參數名;和 在判定為在所述接收到的應答中包含有包含在通過在所述規則存儲單元中存儲的規 則表示的條件中包含的參數類型以及參數名的參數的場合,從該應答中檢出該參數的單兀。
全文摘要
本發明提供一種安全強化裝置。應答過濾器(61)從應答中檢測與過濾規則一致的參數。應答過濾器(61)將檢出的參數與對話ID對應起來存儲在對話對象中。應答過濾器(61)刪除檢出的參數,向客戶終端(10)發送嵌入了對話ID的應答。請求過濾器(63)從對于從客戶終端(10)接收到的應答的請求中刪除對話ID,在該請求中恢復在通過在請求中包含的對話ID識別的對話對象中存儲的參數,向應用服務器(20)發送。
文檔編號H04L29/06GK101800748SQ20101011245
公開日2010年8月11日 申請日期2010年2月4日 優先權日2009年2月6日
發明者小田原育也 申請人:株式會社東芝;東芝解決方案株式會社