本發(fā)明涉及Web安全技術(shù)領(lǐng)域,尤其涉及一種跨站請(qǐng)求偽造CSRF防御認(rèn)證方法和裝置。
背景技術(shù):
早期的Web系統(tǒng)是將瀏覽器(前端)和服務(wù)器端(后端)集成到一個(gè)項(xiàng)目中,導(dǎo)致在實(shí)際開發(fā)過(guò)程中Web前后端耦合程度較高,很難做到專業(yè)分工,嚴(yán)重影響開發(fā)質(zhì)量。為了降低Web前端對(duì)后端的依賴程度,引入了Web前后端分離架構(gòu)。在Web前后端分離架構(gòu)下,前端開發(fā)不影響后端的數(shù)據(jù)處理操作,前后端數(shù)據(jù)交互時(shí)只需調(diào)用相應(yīng)的接口即可,如采用RESTful API接口完成前后端數(shù)據(jù)交互。然而,在Web前后端分離模式下,需要保證前端每次調(diào)用后端提供的API接口的合法性和安全性,尤其是對(duì)CSRF(Cross-Site Request Forgery,跨站請(qǐng)求偽造)攻擊的防護(hù)。
現(xiàn)有技術(shù)中在對(duì)CSRF攻擊進(jìn)行防護(hù)時(shí),常用的方法大致為:一種是通過(guò)輸入驗(yàn)證碼來(lái)限制用戶操作,此方法不僅會(huì)增加開發(fā)成本,還會(huì)嚴(yán)重降低用戶體驗(yàn);另一種是在HTTP Referer中限制請(qǐng)求來(lái)源,該方法雖然開發(fā)成本較低,但是依然存在安全性較大的風(fēng)險(xiǎn);此外,還通過(guò)SESSION(會(huì)話)驗(yàn)證機(jī)制來(lái)校驗(yàn)請(qǐng)求的合法性,該方法要求服務(wù)端綁定路由,渲染模板引擎等,而在Web前后端分離模式下,不再依賴服務(wù)端語(yǔ)言綁定路由和渲染模板引擎,導(dǎo)致前端不再具備完善的SESSION和數(shù)據(jù)存儲(chǔ)功能,從而導(dǎo)致前端(瀏覽器)無(wú)法利用SESSION直接實(shí)現(xiàn)會(huì)話數(shù)據(jù)的保存,也就無(wú)法利用SESSION驗(yàn)證機(jī)制來(lái)校驗(yàn)請(qǐng)求的合法性。
綜上所述,如何既能實(shí)現(xiàn)對(duì)CSRF攻擊的防護(hù),又能保證前后端交換時(shí)后端提供合法可靠的API(Application Program Interference,應(yīng)用程序接口)接口是亟待解決的技術(shù)問題之一。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種跨站請(qǐng)求偽造CSRF防御認(rèn)證方法和裝置,用以實(shí)現(xiàn)對(duì)CSRF攻擊的防護(hù),有效地實(shí)現(xiàn)對(duì)重放攻擊的防護(hù)。
本發(fā)明實(shí)施例提供一種跨站請(qǐng)求偽造CSRF防御認(rèn)證方法,包括:
獲取本次數(shù)據(jù)交互所需的安全口令,所述安全口令是通過(guò)向服務(wù)器發(fā)送的登錄請(qǐng)求獲得的,所述登錄請(qǐng)求包含本次登錄所需的用戶名和密碼;
向服務(wù)器發(fā)送數(shù)據(jù)交互請(qǐng)求,所述數(shù)據(jù)交互請(qǐng)求中攜帶有本次數(shù)據(jù)交互所需的驗(yàn)證信息,所述驗(yàn)證信息用于指示服務(wù)器對(duì)所述數(shù)據(jù)交互請(qǐng)求的合法性進(jìn)行認(rèn)證,其中,所述驗(yàn)證信息是根據(jù)所述安全口令確定出的。
本發(fā)明實(shí)施例提供另一種跨站請(qǐng)求偽造CSRF防御認(rèn)證方法,包括:
接收客戶端發(fā)送的登錄請(qǐng)求,所述登錄請(qǐng)求包含本次登錄所需的用戶名和密碼;
在根據(jù)所述用戶名和密碼對(duì)所述登錄請(qǐng)求驗(yàn)證通過(guò)之后,向客戶端反饋安全口令;以及
接收客戶端發(fā)送的數(shù)據(jù)交互請(qǐng)求,所述數(shù)據(jù)交互請(qǐng)求中攜帶有本次數(shù)據(jù)交互所需的驗(yàn)證信息;
根據(jù)所述驗(yàn)證信息,對(duì)所述數(shù)據(jù)交互請(qǐng)求的合法性進(jìn)行認(rèn)證。
本發(fā)明實(shí)施例提供一種跨站請(qǐng)求偽造CSRF防御認(rèn)證裝置,包括:
獲取單元,用于獲取本次數(shù)據(jù)交互所需的安全口令,所述安全口令是通過(guò)向服務(wù)器發(fā)送的登錄請(qǐng)求獲得的,所述登錄請(qǐng)求包含本次登錄所需的用戶名和密碼;
第一發(fā)送單元,用于向服務(wù)器發(fā)送數(shù)據(jù)交互請(qǐng)求,所述數(shù)據(jù)交互請(qǐng)求中攜帶有本次數(shù)據(jù)交互所需的驗(yàn)證信息,所述驗(yàn)證信息用于指示服務(wù)器對(duì)所述數(shù)據(jù)交互請(qǐng)求的合法性進(jìn)行認(rèn)證,其中,所述驗(yàn)證信息是根據(jù)所述安全口令確定出的。
本發(fā)明實(shí)施例提供另一種跨站請(qǐng)求偽造CSRF防御認(rèn)證裝置,包括:
第一接收單元,用于接收客戶端發(fā)送的登錄請(qǐng)求,所述登錄請(qǐng)求包含本次登錄所需的用戶名和密碼;
發(fā)送單元,用于在根據(jù)所述用戶名和密碼對(duì)所述登錄請(qǐng)求驗(yàn)證通過(guò)之后,向客戶端反饋安全口令;以及
第二接收單元,用于接收客戶端發(fā)送的數(shù)據(jù)交互請(qǐng)求,所述數(shù)據(jù)交互請(qǐng)求中攜帶有本次數(shù)據(jù)交互所需的驗(yàn)證信息;
認(rèn)證單元,用于根據(jù)所述驗(yàn)證信息,對(duì)所述數(shù)據(jù)交互請(qǐng)求的合法性進(jìn)行認(rèn)證。
本發(fā)明有益效果:
本發(fā)明提供的跨站請(qǐng)求偽造CSRF防御認(rèn)證方法和裝置,獲取本次數(shù)據(jù)交互所需的安全口令,所述安全口令是通過(guò)向服務(wù)器發(fā)送的登錄請(qǐng)求獲得的,所述登錄請(qǐng)求包含本次登錄所需的用戶名和密碼;向服務(wù)器發(fā)送數(shù)據(jù)交互請(qǐng)求,所述數(shù)據(jù)交互請(qǐng)求中攜帶有本次數(shù)據(jù)交互所需的驗(yàn)證信息,所述驗(yàn)證信息用于指示服務(wù)器對(duì)所述數(shù)據(jù)交互請(qǐng)求的合法性進(jìn)行認(rèn)證,其中,所述驗(yàn)證信息是根據(jù)所述安全口令確定出的。利用服務(wù)器發(fā)送的安全口令獲得驗(yàn)證消息,服務(wù)器根據(jù)所述驗(yàn)證信息方可確定出客戶端發(fā)送的數(shù)據(jù)交互請(qǐng)求是否合法,不僅能夠?qū)崿F(xiàn)對(duì)CSRF攻擊的防護(hù),還能在一定程度上防護(hù)重放攻擊。
本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說(shuō)明書中闡述,并且,部分地從說(shuō)明書中變得顯而易見,或者通過(guò)實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過(guò)在所寫的說(shuō)明書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來(lái)實(shí)現(xiàn)和獲得。
附圖說(shuō)明
此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本發(fā)明的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
圖1a為本發(fā)明實(shí)施例一提供的跨站請(qǐng)求偽造CSRF防御認(rèn)證方法的實(shí)施流程示意圖;
圖1b為本發(fā)明實(shí)施例一提供的跨站請(qǐng)求偽造CSRF防御認(rèn)證方法中獲得第一簽名信息的方法的實(shí)施流程示意圖;
圖2a為本發(fā)明實(shí)施例二提供的另一種跨站請(qǐng)求偽造CSRF防御認(rèn)證方法的實(shí)施流程示意圖;
圖2b為本發(fā)明實(shí)施例二提供的另一種跨站請(qǐng)求偽造CSRF防御認(rèn)證方法中確定第二簽名信息的方法的實(shí)施流程示意圖;
圖3為本發(fā)明實(shí)施例三提供的一種跨站請(qǐng)求偽造CSRF防御認(rèn)證裝置的結(jié)構(gòu)示意圖;
圖4為本發(fā)明實(shí)施例四提供的另一種跨站請(qǐng)求偽造CSRF防御認(rèn)證裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
本發(fā)明實(shí)施例提供一種跨站請(qǐng)求偽造CSRF防御認(rèn)證方法和裝置,用以實(shí)現(xiàn)對(duì)CSRF攻擊的防護(hù),有效地實(shí)現(xiàn)對(duì)重放攻擊的防護(hù)。
以下結(jié)合說(shuō)明書附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說(shuō)明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí)施例僅用于說(shuō)明和解釋本發(fā)明,并不用于限定本發(fā)明,并且在不沖突的情況下,本發(fā)明中的實(shí)施例及實(shí)施例中的特征可以相互組合。
實(shí)施例一
如圖1a所示,為本發(fā)明實(shí)施例一提供的跨站請(qǐng)求偽造CSRF防御認(rèn)證方法的實(shí)施流程示意圖,可以包括以下步驟:
S11、獲取本次數(shù)據(jù)交互所需的安全口令。
具體實(shí)施時(shí),所述安全口令是通過(guò)向服務(wù)器發(fā)送的登錄請(qǐng)求獲得的,所述登錄請(qǐng)求包含本次登錄所需的用戶名和密碼。
具體的說(shuō),客戶端在向服務(wù)器發(fā)送登錄請(qǐng)求時(shí)(用戶利用用戶名和密碼登錄瀏覽器時(shí)),調(diào)用登錄請(qǐng)求的API接口向服務(wù)器發(fā)送登錄請(qǐng)求,服務(wù)器根據(jù)本次登錄所需的用戶名和密碼,驗(yàn)證本次登錄是否通過(guò),如果是,則向客戶端返回?cái)?shù)據(jù)交互所需的安全口令,記為Token,其中,客戶端在獲取Token后,對(duì)其進(jìn)行簽名計(jì)算,并不直接在數(shù)據(jù)交互過(guò)程中傳輸。
進(jìn)一步地,如果檢測(cè)到在預(yù)設(shè)時(shí)間內(nèi)未向服務(wù)器發(fā)送數(shù)據(jù)交互請(qǐng)求或者檢測(cè)到發(fā)生退出操作,則向服務(wù)器發(fā)送退出請(qǐng)求,所述退出請(qǐng)求用于指示所述安全口令失效。
具體的說(shuō),安全口令Token具有有效期,所述預(yù)設(shè)時(shí)間可以但不限于是10分鐘,用戶可以根據(jù)實(shí)際需要自行修改預(yù)設(shè)時(shí)間,即:客戶端檢測(cè)到在連續(xù)10分鐘內(nèi)并沒有利用Token執(zhí)行任何操作,或者用戶執(zhí)行退出瀏覽器操作時(shí),則客戶端會(huì)向服務(wù)器發(fā)送退出請(qǐng)求,服務(wù)器在接收到該退出請(qǐng)求后,則認(rèn)為該安全口令自此無(wú)效,避免黑客盜取該安全口令惡意攻擊服務(wù)器的情況發(fā)生。
S12、向服務(wù)器發(fā)送數(shù)據(jù)交互請(qǐng)求,所述數(shù)據(jù)交互請(qǐng)求中攜帶有本次數(shù)據(jù)交互所需的驗(yàn)證信息。
具體實(shí)施時(shí),所述驗(yàn)證信息用于指示服務(wù)器對(duì)所述數(shù)據(jù)交互請(qǐng)求的合法性進(jìn)行認(rèn)證,其中,所述驗(yàn)證信息是根據(jù)所述安全口令確定出的。
具體的說(shuō),客戶端在向服務(wù)器發(fā)送數(shù)據(jù)交互請(qǐng)求時(shí),通過(guò)調(diào)用本次數(shù)據(jù)交互請(qǐng)求的API接口,通過(guò)該API接口發(fā)送本次數(shù)據(jù)交互請(qǐng)求。
較佳地,所述驗(yàn)證信息至少包括以下一項(xiàng):身份標(biāo)識(shí)、隨機(jī)數(shù)、發(fā)送數(shù)據(jù)交互請(qǐng)求的時(shí)間戳和第一簽名信息。
較佳地,所述身份標(biāo)識(shí)為通過(guò)向服務(wù)器發(fā)送登錄請(qǐng)求由所述服務(wù)器分配的。
具體的說(shuō),服務(wù)器根據(jù)本次登錄所需的用戶名和密碼,驗(yàn)證本次登錄通過(guò)后,還會(huì)為客戶端唯一分配一個(gè)身份標(biāo)識(shí),記為account ID。
具體的說(shuō),驗(yàn)證信息中的隨機(jī)數(shù)是客戶端隨機(jī)產(chǎn)生的,即為nonce。
需要說(shuō)明的是,客戶端隨機(jī)產(chǎn)生的nonce和本次數(shù)據(jù)交互的時(shí)間戳(timestamp)均是用來(lái)保證本次數(shù)據(jù)交互的唯一性。
具體實(shí)施時(shí),可以按照?qǐng)D1b所示的方法獲得所述第一簽名信息,可以包括以下步驟:
S121、獲取所述數(shù)據(jù)交互請(qǐng)求的應(yīng)用程序接口API名稱,利用第一預(yù)設(shè)算法對(duì)所述API名稱進(jìn)行處理得到第一字符串。
具體實(shí)施時(shí),所述API名稱可以通過(guò)本次數(shù)據(jù)交互時(shí)產(chǎn)生的URL(Uniform Resource Locator,統(tǒng)一資源定位符)地址獲得,當(dāng)用戶在瀏覽器中鍵入任一關(guān)鍵字時(shí),可以根據(jù)URL獲得客戶端需要調(diào)用的API接口的名稱,例如,在“百度一下”中搜索“URL”,則會(huì)產(chǎn)生如下網(wǎng)址:
https://www.baidu.com/s?wd=url&rsv_spt=1&rsv_iqid=0x800885230004fa2e&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=3&rsv_sug1=2&rsv_sug7=100&rsv_t=2b61iLk%2FWtbhJOYYSc3OgcmQhvZ0t1K5%2F6Hb9bs6forOIosRwSgIRJ7NLGPws2PLCYi5
網(wǎng)址中“/s”中的s即為API接口名稱,然后利用第一預(yù)設(shè)算法對(duì)API的接口名稱進(jìn)行處理,具體的說(shuō),可以利用md5(Message Digest Algorithm MD5,消息摘要算法第5版)對(duì)API接口名稱進(jìn)行加密得到第一字符串,即為hashstr1。
S122、獲取所述數(shù)據(jù)交互請(qǐng)求的條件參數(shù),利用第二預(yù)設(shè)算法對(duì)所述條件參數(shù)進(jìn)行處理得到第二字符串。
參考步驟S121中網(wǎng)址,網(wǎng)址中“?wd=url&rsv_spt=1……”即為本發(fā)明中描述的數(shù)據(jù)交互請(qǐng)求的條件參數(shù),在獲取條件參數(shù)后,利用第二預(yù)設(shè)算法對(duì)獲取的條件參數(shù)進(jìn)行處理得到第二字符串。
具體實(shí)施時(shí),在獲取所述數(shù)據(jù)交互請(qǐng)求的條件參數(shù)之后,以及在利用第二預(yù)設(shè)算法對(duì)所述條件參數(shù)進(jìn)行處理得到第二字符串之前,還包括:
利用所述排序算法對(duì)所述條件參數(shù)包含的所有關(guān)鍵值進(jìn)行排序;以及
利用第二預(yù)設(shè)算法對(duì)所述條件參數(shù)進(jìn)行處理得到第二字符串,具體包括:
利用第二預(yù)設(shè)算法對(duì)排序的關(guān)鍵值進(jìn)行處理并拼接得到第二字符串。
具體的說(shuō),參考步驟S121中的網(wǎng)址,網(wǎng)址中“rsv_spt=1和rsv_iqid=0x800885230004fa2e等”中等號(hào)前邊的為關(guān)鍵字key,等號(hào)后邊的為該關(guān)鍵字可以的值,從而可以獲取所述條件參數(shù)包含的所有關(guān)鍵值,然后利用預(yù)設(shè)的排序法對(duì)所述條件參數(shù)包含的所有關(guān)鍵值進(jìn)行排序,得到JSON字符串,再利用第二預(yù)設(shè)算法對(duì)JSON字符串進(jìn)行加密得到第二字符串,記為hashstr2。
較佳地,本發(fā)明實(shí)施例一涉及的排序算法可以但不限于是字典排序算法。需要說(shuō)明的是,如字典為空,則所得JSON字符串為空。
較佳地,本發(fā)明實(shí)施例一涉及的第二預(yù)設(shè)算法可以但不限于包括md5等,需要說(shuō)明的是,本發(fā)明實(shí)施例一中第二預(yù)設(shè)算法也可以與第一預(yù)設(shè)算法不相同,可以根據(jù)實(shí)際加密需求設(shè)定。
S123、獲取所述數(shù)據(jù)交互請(qǐng)求的消息體字符串,利用第三預(yù)設(shè)算法對(duì)所述消息體字符串進(jìn)行處理得到第三字符串。
具體實(shí)施時(shí),消息體字符串在請(qǐng)求頭中,為了防止黑客攻擊了客戶端,獲取了API名稱和條件參數(shù)后,確定出驗(yàn)證信息,利用該驗(yàn)證信息惡意攻擊服務(wù)器,本發(fā)明實(shí)施例一對(duì)請(qǐng)求頭中的消息體字符串也進(jìn)行相應(yīng)處理,達(dá)到雙重保護(hù)的目的,具體處理過(guò)程為:利用第三預(yù)設(shè)算法對(duì)消息體字符串進(jìn)行加密得到第三字符串,記為:hashstr3,需要說(shuō)明的是,本發(fā)明實(shí)施例一中的第三預(yù)設(shè)算法可以但不限于包括md5加密算法,當(dāng)然也可以采用其它加密算法。
S124、按照預(yù)設(shè)的排序算法對(duì)所述第一字符串、第二字符串、第三字符串、安全口令、身份標(biāo)識(shí)、隨機(jī)數(shù)和所述時(shí)間戳進(jìn)行排序并拼接成第四字符串。
在通過(guò)步驟S121~S123獲得hashstr1、hashstr2和hashstr3之后,將從服務(wù)器獲取的Token和account ID,以及客戶端隨機(jī)生成nonce和本次數(shù)據(jù)交互請(qǐng)求的時(shí)間戳按照預(yù)設(shè)的排序算法進(jìn)行排序,在排序之前,需要將本次數(shù)據(jù)交互請(qǐng)求的時(shí)間戳轉(zhuǎn)換成字符串,所述排序算法可以但不限于包括字典排序算法等,將這7個(gè)字符串排序后拼接成一個(gè)字符串,即:第四字符串。
S125、利用第四預(yù)設(shè)算法對(duì)所述第四字符串進(jìn)行處理獲得所述第一簽名信息。
具體實(shí)施時(shí),利用第四預(yù)設(shè)算法對(duì)步驟S124獲得的第四字符串進(jìn)行加密處理即可得到驗(yàn)證信息中的第一簽名信息。
較佳地,所述第四預(yù)設(shè)算法可以但不限于包括sha1(Secure Hash Algorithm,安全哈希算法)等。
需要說(shuō)明的是,步驟S125中得到的第一簽名信息不區(qū)分大小寫。
通過(guò)執(zhí)行步驟S121~S125獲得本次數(shù)據(jù)交互的第一簽名信息,對(duì)本次數(shù)據(jù)交互的API名稱、條件參數(shù)、消息體字符串均進(jìn)行了加密處理,同時(shí)結(jié)合安全口令和隨機(jī)數(shù),數(shù)據(jù)交互時(shí)的時(shí)間戳等按照預(yù)設(shè)排序算法進(jìn)行排序并拼接成一個(gè)字符串,并對(duì)該字符串進(jìn)行加密處理,即使黑客對(duì)本次數(shù)據(jù)交互進(jìn)行攻擊,也很難獲知第一簽名信息的生成過(guò)程和所采用的算法等,由此可知,本發(fā)明實(shí)施例生成第一簽名信息的過(guò)程具有防篡改能力,同時(shí)在一定程度上防護(hù)重放攻擊。
在確定第一簽名信息后,以下述形式將驗(yàn)證信息攜帶在本次數(shù)據(jù)交互請(qǐng)求中:
/?account ID=xxx&nonce=xxx×tamp=xxx&signature=xxx
應(yīng)用場(chǎng)景:RESTful API服務(wù)器化場(chǎng)景
客戶端在向服務(wù)器發(fā)送請(qǐng)求時(shí),采用REST(Representational State Transfer,表述性狀態(tài)轉(zhuǎn)移)規(guī)范,REST是當(dāng)前業(yè)內(nèi)普遍使用的API服務(wù)化規(guī)范。本應(yīng)用場(chǎng)景基于AngularJS框架,對(duì)$http、$q服務(wù)安全REST規(guī)范進(jìn)行了上層封裝,也就是說(shuō)本發(fā)明實(shí)施例一中獲得的驗(yàn)證信息等封裝到Simba中,不影響開發(fā)者對(duì)數(shù)據(jù)交互內(nèi)容的閱讀,同時(shí)也避免了對(duì)REST規(guī)范的破壞。REST常用的請(qǐng)求方法為增刪改查CRUD(Creat-Retrieve-Update-Delete),具體規(guī)范為:post(),delete(),put(),get(),四個(gè)方法,供前端業(yè)務(wù)層使用。
認(rèn)證請(qǐng)求模塊名稱命名為Simba,調(diào)用方法分別為:
get請(qǐng)求:var promise=Simba.get(api,params);
post請(qǐng)求:var promise=Simba.post(api,params,data);
put請(qǐng)求:var promise=Simba.put(api,params,data);
delete請(qǐng)求:var promise=Simba.delete(api,params);
參數(shù)說(shuō)明:
api:指要調(diào)用的服務(wù)接口;
params:指條件參數(shù),未指定時(shí)默認(rèn)為{};
data:指請(qǐng)求消息體參數(shù),未指定時(shí)默認(rèn)為{};
應(yīng)用示例:
從應(yīng)用實(shí)例可知,本發(fā)明實(shí)施例將進(jìn)行認(rèn)證時(shí),將認(rèn)證過(guò)程所需的驗(yàn)證信息封裝在Simba中,并沒有對(duì)REST的規(guī)范性進(jìn)行破壞,驗(yàn)證了與REST規(guī)范的兼容性,通用性較強(qiáng)。
本發(fā)明實(shí)施例提供的一種跨站請(qǐng)求偽造CSRF防御認(rèn)證方法,首先利用用戶名和密碼向服務(wù)器發(fā)送登錄請(qǐng)求,在服務(wù)器驗(yàn)證本次登錄請(qǐng)求通過(guò)后,獲取服務(wù)器發(fā)送的安全口令和服務(wù)器為客戶端分配的身份標(biāo)識(shí),然后客戶端對(duì)該安全口令、身份標(biāo)識(shí)、客戶端隨機(jī)生成的隨機(jī)數(shù)、數(shù)據(jù)交互請(qǐng)求的時(shí)間戳以及本次數(shù)據(jù)交互的API名稱,條件參數(shù)等進(jìn)行處理,最終得到驗(yàn)證信息,然后將所述驗(yàn)證信息發(fā)送給服務(wù)器,所述驗(yàn)證信息用于指示服務(wù)器對(duì)本次數(shù)據(jù)交互請(qǐng)求進(jìn)行驗(yàn)證,不僅保證的本次數(shù)據(jù)交互的唯一性,還有效的防止CSRF攻擊,同時(shí)還具有防篡改效果,在一定程度上有效防護(hù)了重放攻擊。
實(shí)施例二
如圖2a所示,為本發(fā)明實(shí)施例二提供的另一種跨站請(qǐng)求偽造CSRF防御認(rèn)證方法的實(shí)施流程示意圖,可以包括以下步驟:
S21、接收客戶端發(fā)送的登錄請(qǐng)求,所述登錄請(qǐng)求包含本次登錄所需的用戶名和密碼。
S22、在根據(jù)所述用戶名和密碼對(duì)所述登錄請(qǐng)求驗(yàn)證通過(guò)之后,向客戶端反饋安全口令。
具體的說(shuō),服務(wù)器在接收到客戶端發(fā)送的登錄請(qǐng)求后,可以根據(jù)所述登錄請(qǐng)求所用的用戶名和密碼,從預(yù)先存儲(chǔ)的用戶名和密碼的對(duì)應(yīng)關(guān)系中,確定本次登錄是否成功,如果是,則確定本次登錄請(qǐng)求通過(guò);否則,確定本次登錄請(qǐng)求失敗。
在確定本次登錄請(qǐng)求通過(guò)后,向客戶端反饋安全口令。較佳地,為了提供數(shù)據(jù)交互的安全性,服務(wù)器設(shè)定安全口令具有一定的有效期,具體確定所述安全口令無(wú)效的過(guò)程為:
如果檢測(cè)到在預(yù)設(shè)時(shí)間內(nèi)未接收到客戶端發(fā)送的數(shù)據(jù)交互請(qǐng)求,或者接收到客戶端發(fā)送的退出請(qǐng)求,則確定所述安全口令失效。
具體的說(shuō),服務(wù)器設(shè)定的預(yù)設(shè)時(shí)間可以但不限于為30分鐘,當(dāng)然也可以縮短或增加預(yù)設(shè)時(shí)間,本發(fā)明實(shí)施例對(duì)此不進(jìn)行限定。
較佳地,在對(duì)所述登錄請(qǐng)求驗(yàn)證通過(guò)之后,還包括:
為客戶端分配唯一的身份標(biāo)識(shí),并將所述身份標(biāo)識(shí)發(fā)送給所述客戶端。
具體的說(shuō),服務(wù)器有可能同時(shí)接收到不止一個(gè)客戶端發(fā)送的登錄請(qǐng)求,此時(shí),服務(wù)器為了區(qū)分各個(gè)客戶端,需要為每一個(gè)客戶端分配唯一的身份標(biāo)識(shí),并將為客戶端分配的身份標(biāo)識(shí)發(fā)送給該客戶端,以便下次在接收到客戶端發(fā)送的交互請(qǐng)求后,可以根據(jù)交互請(qǐng)求中攜帶的身份標(biāo)識(shí),識(shí)別出本次數(shù)據(jù)交互是哪個(gè)客戶端發(fā)送的。
S23、接收客戶端發(fā)送的數(shù)據(jù)交互請(qǐng)求,所述數(shù)據(jù)交互請(qǐng)求中攜帶有本次數(shù)據(jù)交互所需的驗(yàn)證信息。
具體實(shí)施時(shí),所述驗(yàn)證信息至少包括以下一項(xiàng):身份標(biāo)識(shí)、隨機(jī)數(shù)、發(fā)送數(shù)據(jù)交互請(qǐng)求的時(shí)間戳和第一簽名信息。
S24、根據(jù)所述驗(yàn)證信息,對(duì)所述數(shù)據(jù)交互請(qǐng)求的合法性進(jìn)行認(rèn)證。
具體實(shí)施時(shí),按照?qǐng)D2b所示的方法根據(jù)所述驗(yàn)證信息,對(duì)所述數(shù)據(jù)交互請(qǐng)求的合法性進(jìn)行認(rèn)證,可以包括以下步驟:
S241、獲取所述數(shù)據(jù)交互請(qǐng)求的應(yīng)用程序接口API名稱,利用第一預(yù)設(shè)算法對(duì)所述API名稱進(jìn)行處理得到第一字符串。
具體的說(shuō),服務(wù)器在接收客戶端發(fā)送的數(shù)據(jù)交互請(qǐng)求時(shí),可以從相應(yīng)API接口獲得本次數(shù)據(jù)交互請(qǐng)求,由此可以獲知該API接口的名稱,然后參考實(shí)施例一步驟S121對(duì)API名稱進(jìn)行處理得到第一字符串。
值得注意的是,為了使得服務(wù)器對(duì)客戶端驗(yàn)證通過(guò),客戶端與服務(wù)器預(yù)先預(yù)定好加密所采用的算法,即要求本發(fā)明實(shí)施例二中的第一預(yù)設(shè)算法應(yīng)當(dāng)與本發(fā)明實(shí)施例一中采用的第一預(yù)設(shè)算法相同,如可以是md5算法等。
S242、獲取所述數(shù)據(jù)交互請(qǐng)求的條件參數(shù),利用第二預(yù)設(shè)算法對(duì)所述條件參數(shù)進(jìn)行處理得到第二字符串,如可以是md5算法等。
參照本發(fā)明實(shí)施例一中步驟S122對(duì)條件參數(shù)進(jìn)行處理,按照實(shí)施例一中所采用的第二預(yù)設(shè)算法對(duì)條件參數(shù)進(jìn)行處理。
較佳地,在獲取所述數(shù)據(jù)交互請(qǐng)求的條件參數(shù)之后,以及在利用第二預(yù)設(shè)算法對(duì)所述條件參數(shù)進(jìn)行處理得到第二字符串之前,還包括:
利用所述排序算法對(duì)所述條件參數(shù)包含的所有關(guān)鍵值進(jìn)行排序;以及
利用第二預(yù)設(shè)算法對(duì)所述條件參數(shù)進(jìn)行處理得到第二字符串,具體包括:
利用第二預(yù)設(shè)算法對(duì)排序的關(guān)鍵值進(jìn)行處理并拼接得到第二字符串。
具體實(shí)施時(shí),本步驟S242中所采用的第二預(yù)設(shè)算法和預(yù)設(shè)的排序算法應(yīng)當(dāng)與實(shí)施例一步驟S122中采用的第二預(yù)設(shè)算法和排序算法相同,如第二預(yù)設(shè)算法可以是md5算法等,排序算法可以是字典排序法。
S243、獲取所述數(shù)據(jù)交互請(qǐng)求的消息體字符串,利用第三預(yù)設(shè)算法對(duì)所述消息體字符串進(jìn)行處理得到第三字符串。
具體實(shí)施時(shí),參考本發(fā)明實(shí)施例一步驟S123獲得第三字符串的處理過(guò)程,且要求步驟S243中所采用的第三預(yù)設(shè)算法應(yīng)當(dāng)與步驟步驟S123中所采用的第三預(yù)設(shè)算法相同,如可以是md5算法等。
S244、根據(jù)身份標(biāo)識(shí)與安全口令的對(duì)應(yīng)關(guān)系,以及所述驗(yàn)證信息中包含的身份標(biāo)識(shí),確定驗(yàn)證信息中包含的身份標(biāo)識(shí)對(duì)應(yīng)的安全口令。
具體的說(shuō),服務(wù)器在獲得客戶端發(fā)送的驗(yàn)證信息后,從驗(yàn)證信息中獲取客戶端的身份標(biāo)識(shí)。由于該身份標(biāo)識(shí)為服務(wù)器在對(duì)客戶端發(fā)送的登錄請(qǐng)求驗(yàn)證通過(guò)之后為客戶端唯一分配和發(fā)送的,同時(shí),服務(wù)器還向客戶端發(fā)送的安全口令,由此可以得出,身份筆試與安全口令具有對(duì)應(yīng)關(guān)系,且服務(wù)器可以根據(jù)該身份標(biāo)識(shí)與安全口令的對(duì)應(yīng)關(guān)系,獲取該身份標(biāo)識(shí)對(duì)應(yīng)的安全口令。
S245、按照預(yù)設(shè)的排序算法對(duì)所述第一字符串、第二字符串、第三字符串以及驗(yàn)證信息中包含的安全口令、身份標(biāo)識(shí)、隨機(jī)數(shù)和時(shí)間戳進(jìn)行排序并拼接成第四字符串。
具體實(shí)施時(shí),參照實(shí)施例一步驟S124獲得第四字符串的過(guò)程,且要求步驟S245中涉及的排序算法應(yīng)當(dāng)與步驟S124中的排序算法相同,如可以是字典排序算法等。
S246、利用第四預(yù)設(shè)算法對(duì)所述第四字符串進(jìn)行處理得到第二簽名信息。
具體的說(shuō),步驟S246中的第四預(yù)設(shè)算法應(yīng)當(dāng)與步驟125中的第四預(yù)設(shè)算法相同,如可以是sha1算法等。
S247、判斷所述第一簽名信息與所述第二簽名信息是否相同,如果是,則執(zhí)行步驟S248;否則,執(zhí)行步驟S249。
S248、確定對(duì)所述數(shù)據(jù)交互請(qǐng)求的合法性認(rèn)證通過(guò)。
驗(yàn)證通過(guò)之后,即可向客戶端反饋本次數(shù)據(jù)交互請(qǐng)求的響應(yīng)結(jié)果,保證了數(shù)據(jù)傳輸?shù)陌踩浴?/p>
S249、確定對(duì)所述數(shù)據(jù)交互請(qǐng)求的合法性認(rèn)證失敗。
本發(fā)明實(shí)施例二提供的另一種跨站請(qǐng)求偽造CSRF防御認(rèn)證方法,在接收到客戶端發(fā)送的登錄請(qǐng)求后,根據(jù)所述登錄請(qǐng)求包含本次登錄所需的用戶名和密碼,對(duì)所述登錄請(qǐng)求驗(yàn)證通過(guò)之后,向客戶端反饋安全口令;以及接收客戶端發(fā)送的數(shù)據(jù)交互請(qǐng)求,所述數(shù)據(jù)交互請(qǐng)求中攜帶有本次數(shù)據(jù)交互所需的驗(yàn)證信息;所述驗(yàn)證信息包含身份標(biāo)識(shí)、隨機(jī)數(shù)、發(fā)送數(shù)據(jù)交互請(qǐng)求的時(shí)間戳和第一簽名信息,服務(wù)器在接收到驗(yàn)證信息時(shí),根據(jù)所述身份標(biāo)識(shí)信息、隨機(jī)數(shù)和所述時(shí)間戳等按照與生成第一簽名信息的算法生成第二簽名信息,如果確定出所述第一簽名信息和所述第二簽名信息相同,則確定對(duì)所述數(shù)據(jù)交互請(qǐng)求的合法性認(rèn)證成功,并向客戶端反饋本次數(shù)據(jù)交互請(qǐng)求的響應(yīng)結(jié)果,采用本發(fā)明實(shí)施例二提供的方法,不僅保證了數(shù)據(jù)傳輸?shù)陌踩裕瑫r(shí)有效地對(duì)客戶端的合法可信性進(jìn)行識(shí)別。
實(shí)施例三
基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一種跨站請(qǐng)求偽造CSRF防御認(rèn)證裝置,由于上述裝置解決問題的原理與跨站請(qǐng)求偽造CSRF防御認(rèn)證方法相似,因此上述裝置的實(shí)施可以參見方法的實(shí)施,重復(fù)之處不再贅述。
如圖3所示,為本發(fā)明實(shí)施例三提供的一種跨站請(qǐng)求偽造CSRF防御認(rèn)證裝置的結(jié)構(gòu)示意圖,包括:獲取單元31和第一發(fā)送單元32,其中:
獲取單元31,用于獲取本次數(shù)據(jù)交互所需的安全口令,所述安全口令是通過(guò)向服務(wù)器發(fā)送的登錄請(qǐng)求獲得的,所述登錄請(qǐng)求包含本次登錄所需的用戶名和密碼;
第一發(fā)送單元32,用于向服務(wù)器發(fā)送數(shù)據(jù)交互請(qǐng)求,所述數(shù)據(jù)交互請(qǐng)求中攜帶有本次數(shù)據(jù)交互所需的驗(yàn)證信息,所述驗(yàn)證信息用于指示服務(wù)器對(duì)所述數(shù)據(jù)交互請(qǐng)求的合法性進(jìn)行認(rèn)證,其中,所述驗(yàn)證信息是根據(jù)所述安全口令確定出的。
較佳地,所述驗(yàn)證信息至少包括以下一項(xiàng):身份標(biāo)識(shí)、隨機(jī)數(shù)、發(fā)送數(shù)據(jù)交互請(qǐng)求的時(shí)間戳和第一簽名信息。
具體實(shí)施時(shí),所述第一發(fā)送單元32,具體包括:第一獲取子單元、第二獲取子單元、第三獲取子單元、排序子單元和確定子單元,其中:
所述第一獲取子單元,用于獲取所述數(shù)據(jù)交互請(qǐng)求的應(yīng)用程序接口API名稱,利用第一預(yù)設(shè)算法對(duì)所述API名稱進(jìn)行處理得到第一字符串;
所述第二獲取子單元,用于獲取所述數(shù)據(jù)交互請(qǐng)求的條件參數(shù),利用第二預(yù)設(shè)算法對(duì)所述條件參數(shù)進(jìn)行處理得到第二字符串;
所述第三獲取子單元,用于獲取所述數(shù)據(jù)交互請(qǐng)求的消息體字符串,利用第三預(yù)設(shè)算法對(duì)所述消息體字符串進(jìn)行處理得到第三字符串;
排序子單元,用于按照預(yù)設(shè)的排序算法對(duì)所述第一字符串、第二字符串、第三字符串、安全口令、身份標(biāo)識(shí)、隨機(jī)數(shù)和所述時(shí)間戳進(jìn)行排序并拼接成第四字符串;
確定子單元,用于利用第四預(yù)設(shè)算法對(duì)所述第四字符串進(jìn)行處理獲得所述第一簽名信息。
具體實(shí)施時(shí),所述裝置,還包括排序單元33,其中:
所述排序單元33,用于在所述第二獲取子單元獲取所述數(shù)據(jù)交互請(qǐng)求的條件參數(shù)之后,以及利用第二預(yù)設(shè)算法對(duì)所述條件參數(shù)進(jìn)行處理得到第二字符串之前,利用所述排序算法對(duì)所述條件參數(shù)包含的所有關(guān)鍵值進(jìn)行排序;
所述第二獲取子單元,還用于利用第二預(yù)設(shè)算法對(duì)所述排序單元33排序的關(guān)鍵值進(jìn)行處理并拼接得到第二字符串。
較佳地,所述身份標(biāo)識(shí)為通過(guò)向服務(wù)器發(fā)送登錄請(qǐng)求由所述服務(wù)器分配的。
具體實(shí)施時(shí),還包括第二發(fā)送單元34,其中:
所述第二發(fā)送單元34,用于如果檢測(cè)到在預(yù)設(shè)時(shí)間內(nèi)未向服務(wù)器發(fā)送數(shù)據(jù)交互請(qǐng)求或者檢測(cè)到發(fā)生退出操作,則向服務(wù)器發(fā)送退出請(qǐng)求,所述退出請(qǐng)求用于指示所述安全口令失效。
為了描述的方便,以上各部分按照功能劃分為各模塊(或單元)分別描述。當(dāng)然,在實(shí)施本發(fā)明時(shí)可以把各模塊(或單元)的功能在同一個(gè)或多個(gè)軟件或硬件中實(shí)現(xiàn)。
實(shí)施例四
基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了另一種跨站請(qǐng)求偽造CSRF防御認(rèn)證裝置,由于上述裝置解決問題的原理與另一種跨站請(qǐng)求偽造CSRF防御認(rèn)證方法相似,因此上述裝置的實(shí)施可以參見方法的實(shí)施,重復(fù)之處不再贅述。
如圖4所示,為本發(fā)明實(shí)施例四提供的另一種跨站請(qǐng)求偽造CSRF防御認(rèn)證裝置的結(jié)構(gòu)示意圖,包括:第一接收單元41、發(fā)送單元42、第二接收單元43和認(rèn)證單元44,其中:
第一接收單元41,用于接收客戶端發(fā)送的登錄請(qǐng)求,所述登錄請(qǐng)求包含本次登錄所需的用戶名和密碼;
發(fā)送單元42,用于在根據(jù)所述用戶名和密碼對(duì)所述登錄請(qǐng)求驗(yàn)證通過(guò)之后,向客戶端反饋安全口令;以及
第二接收單元43,用于接收客戶端發(fā)送的數(shù)據(jù)交互請(qǐng)求,所述數(shù)據(jù)交互請(qǐng)求中攜帶有本次數(shù)據(jù)交互所需的驗(yàn)證信息;
認(rèn)證單元44,用于根據(jù)所述驗(yàn)證信息,對(duì)所述數(shù)據(jù)交互請(qǐng)求的合法性進(jìn)行認(rèn)證。
具體實(shí)施時(shí),還包括分配單元45,其中:
所述分配單元45,用于在所述發(fā)送單元對(duì)所述登錄請(qǐng)求驗(yàn)證通過(guò)之后,為客戶端分配唯一的身份標(biāo)識(shí),并將所述身份標(biāo)識(shí)發(fā)送給所述客戶端。
較佳地,所述驗(yàn)證信息至少包括以下一項(xiàng):身份標(biāo)識(shí)、隨機(jī)數(shù)、發(fā)送數(shù)據(jù)交互請(qǐng)求的時(shí)間戳和第一簽名信息。
優(yōu)選地,所述認(rèn)證單元44,具體包括:第一獲取子單元、第二獲取子單元、第三獲取子單元、第一確定子單元、排序子單元、第二確定子單元和第三確定子單元,其中:
所述第一獲取子單元,用于獲取所述數(shù)據(jù)交互請(qǐng)求的應(yīng)用程序接口API名稱,利用第一預(yù)設(shè)算法對(duì)所述API名稱進(jìn)行處理得到第一字符串;
所述第二獲取子單元,用于獲取所述數(shù)據(jù)交互請(qǐng)求的條件參數(shù),利用第二預(yù)設(shè)算法對(duì)所述條件參數(shù)進(jìn)行處理得到第二字符串;
所述第三獲取子單元,用于獲取所述數(shù)據(jù)交互請(qǐng)求的消息體字符串,利用第三預(yù)設(shè)算法對(duì)所述消息體字符串進(jìn)行處理得到第三字符串;
所述第一確定子單元,用于根據(jù)身份標(biāo)識(shí)與安全口令的對(duì)應(yīng)關(guān)系,以及所述驗(yàn)證信息中包含的身份標(biāo)識(shí),確定驗(yàn)證信息中包含的身份標(biāo)識(shí)對(duì)應(yīng)的安全口令;
排序子單元,用于按照預(yù)設(shè)的排序算法對(duì)所述第一字符串、第二字符串、第三字符串以及驗(yàn)證信息中包含的安全口令、身份標(biāo)識(shí)、隨機(jī)數(shù)和時(shí)間戳進(jìn)行排序并拼接成第四字符串;并
所述第二確定子單元,用于利用第四預(yù)設(shè)算法對(duì)所述第四字符串進(jìn)行處理得到第二簽名信息;
所述第三確定子單元,用于如果所述第一簽名信息與所述第二簽名信息相同,則確定對(duì)所述數(shù)據(jù)交互請(qǐng)求的合法性認(rèn)證通過(guò);否則,確定對(duì)所述數(shù)據(jù)交互請(qǐng)求的合法性認(rèn)證失敗。
具體實(shí)施時(shí),所述裝置,還包括排序單元46,其中:
所述排序單元46,用于在所述第二獲取子單元獲取所述數(shù)據(jù)交互請(qǐng)求的條件參數(shù)之后,以及利用第二預(yù)設(shè)算法對(duì)所述條件參數(shù)進(jìn)行處理得到第二字符串之前,利用所述排序算法對(duì)所述條件參數(shù)包含的所有關(guān)鍵值進(jìn)行排序;
所述第二獲取子單元,還用于利用第二預(yù)設(shè)算法對(duì)所述排序單元46排序的關(guān)鍵值進(jìn)行處理并拼接得到第二字符串。
進(jìn)一步地,還包括確定單元47,其中:
所述確定單元47,用于如果檢測(cè)到在預(yù)設(shè)時(shí)間內(nèi)未接收到客戶端發(fā)送的數(shù)據(jù)交互請(qǐng)求,或者接收到客戶端發(fā)送的退出請(qǐng)求,則確定所述安全口令失效。
為了描述的方便,以上各部分按照功能劃分為各模塊(或單元)分別描述。當(dāng)然,在實(shí)施本發(fā)明時(shí)可以把各模塊(或單元)的功能在同一個(gè)或多個(gè)軟件或硬件中實(shí)現(xiàn)。
本申請(qǐng)的實(shí)施例三和實(shí)施例四所提供的跨站請(qǐng)求偽造CSRF防御認(rèn)證裝置可通過(guò)計(jì)算機(jī)程序?qū)崿F(xiàn)。本領(lǐng)域技術(shù)人員應(yīng)該能夠理解,上述的模塊劃分方式僅是眾多模塊劃分方式中的一種,如果劃分為其他模塊或不劃分模塊,只要跨站請(qǐng)求偽造CSRF防御認(rèn)證裝置具有上述功能,都應(yīng)該在本申請(qǐng)的保護(hù)范圍之內(nèi)。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。