• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

      高河福

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

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

      高河福

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

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

      表單;同步令牌;

      1 引言

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

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

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

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

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

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

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

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

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

      圖1 表單重復提交問題

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

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

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

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

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

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

      圖2 令牌機制時序圖

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

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

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

      4.1 令牌初始化

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

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

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

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

      4.2 令牌比較

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

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

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

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

      令牌比較函數(shù)的代碼如下:

      以上

      圖3 令牌比較

      4.3 令牌銷毀

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

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

      4.4 重新生成令牌

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

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

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

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

      5 總結(jié)

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

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

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

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

      [4]謝凡.基于安全令牌的Web服務(wù)安全研究[D].北京:中國地質(zhì)大學,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

      廣東省省部產(chǎn)學研結(jié)合項目(2010B090400149)資助.

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

      責任編輯 爾 遲 楊培奎

      猜你喜歡
      令牌表單視圖
      稱金塊
      電子表單系統(tǒng)應(yīng)用分析
      華東科技(2021年9期)2021-09-23 02:15:24
      基于路由和QoS令牌桶的集中式限速網(wǎng)關(guān)
      動態(tài)令牌分配的TCSN多級令牌桶流量監(jiān)管算法
      計算機工程(2018年8期)2018-08-17 00:26:54
      淺談網(wǎng)頁制作中表單的教學
      5.3 視圖與投影
      視圖
      Y—20重型運輸機多視圖
      SA2型76毫米車載高炮多視圖
      基于Infopath實現(xiàn)WEB動態(tài)表單的研究
      電子世界(2012年24期)2012-12-17 10:49:06
      河间市| 墨竹工卡县| 枞阳县| 大邑县| 五大连池市| 平南县| 孝感市| 和硕县| 平利县| 特克斯县| 崇阳县| 河间市| 和顺县| 塔城市| 滕州市| 佛教| 荥经县| 日照市| 阿荣旗| 贡觉县| 大埔区| 麻阳| 潞西市| 双柏县| 岑巩县| 卓资县| 雅江县| 惠来县| 大新县| 芜湖市| 马龙县| 正镶白旗| 玉环县| 东平县| 柘荣县| 洪雅县| 合川市| 贵港市| 霍邱县| 苗栗市| 加查县|