国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

令牌機制在B/S應用系統(tǒng)中表單重復提交問題的研究與應用

2011-12-21 10:14:02高河福
韓山師范學院學報 2011年6期
關鍵詞:令牌表單視圖

高河福

(廣州市森銳電子科技有限公司,廣東廣州 510664)

令牌機制在B/S應用系統(tǒng)中表單重復提交問題的研究與應用

高河福

(廣州市森銳電子科技有限公司,廣東廣州 510664)

本文分析了B/S結構的應用系統(tǒng)中表單重復提交的原因,并在深入研究同步令牌核心工作原理和應用過程的基礎上,將同步令牌的機制用于解決表單重復提交的問題,讓需要避免重復提交的頁面在每次提交頁面時攜帶同步令牌,通過初始化令牌、校驗令牌、銷毀令牌等步驟,解決了表單重復提交的問題.并對其實現(xiàn)的過程進行了分析和闡述.

表單;同步令牌;

1 引言

在B/S結構的系統(tǒng)中應用了大量的表單,表單中存在著許多方便的功能如刷新、后退和前進等,這些功能給瀏覽器帶來方便性的同時,也給系統(tǒng)帶來了表單重復提交的問題.由于表單數據的重復提交,導致網絡和服務器資源的浪費,并有可能導致數據庫數據冗余,嚴重時可導致服務器死機現(xiàn)象[1].

本文總結了引起表單重復提交的原因,并引入令牌環(huán)作為解決該問題的技術,對令牌機制解決表單重復提交的原理進行分析和研究,并對其實現(xiàn)過程進行了分析和闡述.

2 B/S應用系統(tǒng)中表單重復提交問題分析

在B/S結構的應用系統(tǒng)中,導致表單重復提交問題的原因有以下幾個:

(1)用戶惡意請求服務器,比如暴力破解密碼等行為.

(2)因為瀏覽器和機器的性能問題,用戶等待不了服務端返回數據不斷發(fā)送表單.

(3)用戶習慣快捷鍵操作,容易多次回車發(fā)送請求.

(4)在表單接收完之前,重新提交了同樣的表單.

上述情況大多是發(fā)生在WEB層之前,是重復提交表單請求的主要原因.對于一些關鍵的頁面,如購物進出帳等不做好限制輸入機制,會導致臟數據的發(fā)生.如圖1所示:

圖1 表單重復提交問題

如圖1所示,客戶端重復請求了兩次相同的內容,如果系統(tǒng)沒有作出對應的限制輸入過濾機制,業(yè)務層的EJB將重復執(zhí)行兩次處理的邏輯.用戶這樣操作后,數據庫將出現(xiàn)臟數據,(當插入數據時,EJB生成表的主鍵,是由后臺自動生成),或者系統(tǒng)會出錯(如果用戶輸入的信息已經包含主鍵).為了避免這種錯誤發(fā)生,可以在客戶端-WEB層通過腳本進行校驗,但是這樣每個頁面分發(fā)都要手工校驗,效率很低,而且當用戶通過對WEB層-業(yè)務層直接發(fā)送請求,也不可避免地重復處理相同的請求.因此在各層(客戶端到WEB端,WEB端到業(yè)務層,業(yè)務層到數據庫)之中,在客戶端和Web層加入控制代碼的效果是最好的.因為在發(fā)送提交后到檢測到該提交是重復提交已經浪費了處理的時間,重復提交所經過的流程處理就引起了資源浪費[2].

本文闡述了如何使用令牌機制來避免頁面在提交請求時候,服務器重復執(zhí)行提交的相同邏輯.具體實現(xiàn)的方法是,首先服務器端的將頁面請求中的令牌值與當前用戶的令牌值進行匹配,而且,在答復客戶端之前,產生一個新的令牌保存起來,如果用戶重復提交頁面的時候,就會導致客戶端的令牌和服務器端的令牌不一樣,如果兩端的令牌相同或令牌不存在就不進行發(fā)送、不處理邏輯,否則響應請求.

3 同步令牌實現(xiàn)機制研究

同步令牌機制是一種通過對服務器端令牌與客戶端令牌進行校驗,通過校驗結果是否一致來決定請求是否通過的機制,其中包括初始化令牌、校驗令牌、銷毀令牌等步驟.下面使用MVC模型(視圖、控制器和模型)來說明令牌同步機制的核心工作原理.

MVC模型包括兩個部分,業(yè)務處理邏輯和業(yè)務數據.模型中的視圖層是指用戶對系統(tǒng)直觀認知的地方,表單等存放的地方.它由控制器生成和分發(fā),可以向控制器發(fā)送請求信息,被控制器所管理[3].因此每一次的請求發(fā)送都會在視圖發(fā)送,可以在此作出簡單的校驗.控制器是視圖模塊與模型模塊兩者之間的中樞,處理邏輯的地方,它響應視圖的請求,收集視圖提交的信息并進行處理.

在本文中,控制器響應視圖接受請求時產生.令牌分別寄存在服務器端和客戶端.服務端通過會話跟蹤來管理,客戶端利用表單的隱藏域來實現(xiàn).

圖2 令牌機制時序圖

圖2是令牌同步機制如何實現(xiàn)的時序圖.用戶從客戶端向發(fā)出請求到控制器時(第一步),令牌就在控制器初始化生成,再把令牌存放在頁面的隱藏字段和會話環(huán)境中(第二步),最后生成分發(fā)頁面(第三步),反饋給用戶(第四步),然后用戶在客戶端得到頁面進行操作(第五步),填寫完表單后再提交(第六步和第七步),控制器接受提交請求時,開始進行校驗,首先將后臺的令牌數據和頁面中的隱藏域字段進行比較(第八步),如果令牌值一致(本時序圖沒有列出不一致情況,如果校驗不相等應該調轉頁面至錯誤頁面提示用戶),最后控制器會把令牌銷毀(第九步),然后執(zhí)行業(yè)務邏輯處理用戶請求(第十步和第十一步),處理完畢,把數據填裝到模型(第十二步),然后在控制器進行重生生成令牌(第十三步),并讓令牌同步(第十四步),最后根據業(yè)務邏輯定義生成頁面(第十五步),反饋用戶(第十六步).

4 表單重復提交的同步令牌解決方案實現(xiàn)

表單重復提交的同步令牌解決方案實現(xiàn)分為下四個步驟:

4.1 令牌初始化

為了防止表單重復提交,在每次提交請求的時候,都在在控制器生成和分發(fā)頁面之前要對令牌進行初始化,每個令牌代表一個請求以區(qū)別不同的表單提交.其過程分為令牌生成和令牌同步.

為了每個生成的令牌是唯一的,可以通過GUID或者經過一定運算的時間戳來達到生成唯一的令牌.本文通過GUID而保證令牌值的唯一性.GUID是一個128位長的數字,一般用16進制表示.算法的核心思想是結合機器的網卡、當地時間、一個隨機數來生成GUID.從理論上講,如果一臺機器每秒產生10000000個GUID,則可以保證(概率意義上)3240年不重復.代碼如下:

通過方法得到令牌,然后把令牌值保存在用戶會話中,這樣可以在客戶端和服務端可以保證令牌的同步,具體實現(xiàn)如下:

令牌初始化完后,客戶端和服務器就擁有了相同的令牌值.

4.2 令牌比較

因為每個令牌各不相同,所以可以判斷2次提交是否相同請求.因此在處理用戶的請求時,就要在處理器里進行令牌比較,驗證用戶攜帶的令牌值與存放在Session中的令牌值是否一致,如果令牌匹配成功則進行業(yè)務邏輯操作,匹配不成功則不進行業(yè)務邏輯操作,如圖3.在下列情況下,表明客戶端和服務器端的令牌值不同:

(1)在客戶端中檢測不到令牌(令牌值為空);

(2)存放在會話中的令牌變量為不存在;

(3)頁面與服務端的令牌不匹配.

令牌比較函數的代碼如下:

以上

圖3 令牌比較

4.3 令牌銷毀

在令牌比較完成后,客戶端有新的請求時應該進行令牌的銷毀,否則當用戶的新請求發(fā)送到控制器時,令牌還沒有被控制器銷毀,控制器的令牌與之匹配,這樣就會重復執(zhí)行業(yè)務邏輯.

因為令牌是存放在會話當中,所以只要把會話的變量設置為空并覆蓋即可.session.setAttribute("test_token",null).

4.4 重新生成令牌

每當用戶發(fā)送請求到控制器,控制器處理完用戶的請求后,就必須重新生成令牌,達到令牌同步.如此,系統(tǒng)才允許接受用戶提交請求[4].在代碼的實現(xiàn)上,該過程和令牌初始化是一樣的,因此不再重復.但是令牌機制在這里只是現(xiàn)在同一標的在當前會話期間多次提交的一種限制方法,還需要在多個方面改進,如:

(1)從客戶端上進行限制檢測用戶錄入數據合法性,使不法數據可以通過系統(tǒng)回退,修改正確后才能提交表單.

(2)因為令牌在會話環(huán)境中生成,因此比較令牌不能在多個會話中進行比較,所以如果要限制到多會話,則需要用到數據庫或Cookeis來保存相關數據了.

(3)本文的令牌機制主要防止用戶誤操作,不能防止刻意的攻擊.

5 總結

本文對B/S系統(tǒng)中經常出現(xiàn)的表單重復提交進行了分析和研究,通過引入同步令牌機制,解決了該問題.同時,分析了同步令牌制止的應用原理,并實現(xiàn)同步令牌在該系統(tǒng)中的應用,該方法對B/S系統(tǒng)的表單重復提交問題,具有一定的借鑒意義.

[1]朱國輝,周琪云,朱文生.Web應用中重復提交的探討[J].計算機與現(xiàn)代化,2006(7):75-77.

[2]楊兵.令牌技術在Web項目中的研究與應用[J].計算機與現(xiàn)代化,2005(7):110-112.

[3]HARTMAN BRET,F(xiàn)LINN DONALD J.全面掌握Web服務安全性[M].北京:清華大學出版社,2004:6.

[4]謝凡.基于安全令牌的Web服務安全研究[D].北京:中國地質大學,2007:65.

Research and Application of Token Mechanism on Repeating Submission of Web Form in the B/S Application System

GAO He-fu
(Guangzhou Sunrise Electronic Technology Co.,Ltd,Guangzhou 510664,China)

This paper analyzes the reasons of repeating submission of web form in B/S structure applications,and in-depth study of core working principle and application process of synchronous token.It solves this problem through making the web form to avoid repeating submission through bringing the synchronous tokens through initializing token,checking the token,destroying token.Also,its implementation process was analyzed and elaborated.

web form;synchronous token

TP311.52

A

1007-6883(2011)06-0049-05

2011-11-16

廣東省省部產學研結合項目(2010B090400149)資助.

高河福(1978-),男,福建安溪人,廣州市森銳電子科技有限公司系統(tǒng)分析師.

責任編輯 爾 遲 楊培奎

猜你喜歡
令牌表單視圖
稱金塊
電子表單系統(tǒng)應用分析
華東科技(2021年9期)2021-09-23 02:15:24
基于路由和QoS令牌桶的集中式限速網關
動態(tài)令牌分配的TCSN多級令牌桶流量監(jiān)管算法
計算機工程(2018年8期)2018-08-17 00:26:54
淺談網頁制作中表單的教學
5.3 視圖與投影
視圖
Y—20重型運輸機多視圖
SA2型76毫米車載高炮多視圖
基于Infopath實現(xiàn)WEB動態(tài)表單的研究
電子世界(2012年24期)2012-12-17 10:49:06
泗阳县| 湘乡市| 海原县| 中卫市| 东兴市| 舒城县| 岐山县| 洪泽县| 资源县| 馆陶县| 河南省| 陆丰市| 体育| 卢龙县| 谷城县| 聂拉木县| 平度市| 桃江县| 从江县| 广宁县| 临湘市| 浙江省| 高碑店市| 阿克| 盐池县| 龙里县| 新化县| 蒙城县| 和田县| 安化县| 麻阳| 东源县| 澄城县| 东乌珠穆沁旗| 西乌珠穆沁旗| 石城县| 拜城县| 叶城县| 马尔康县| 黎城县| 额济纳旗|