本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及應(yīng)用安全技術(shù)領(lǐng)域,尤其涉及接口調(diào)用方法和裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,各個(gè)應(yīng)用程序之間或程序與服務(wù)器之間都可以通過(guò)http(hypertexttransferprotocol,超文本傳輸協(xié)議)接口調(diào)用的方式進(jìn)行交互,并通過(guò)這種方式來(lái)拓展自身的功能。
在現(xiàn)有技術(shù)中,http接口的提供者會(huì)給調(diào)用者分配一個(gè)程序標(biāo)識(shí)(appid)和對(duì)應(yīng)的令牌(token),調(diào)用者在請(qǐng)求http接口時(shí)將appid、token作為參數(shù)傳遞給接口提供者。接口提供者接收到調(diào)用者的appid、token參數(shù)和本地保存的token進(jìn)行匹配,如果能匹配上則認(rèn)為請(qǐng)求有效,否則認(rèn)為請(qǐng)求無(wú)效。在這種安全校驗(yàn)過(guò)程中,由于token需要作為請(qǐng)求參數(shù)一起傳遞,因此存在token被非法請(qǐng)求者竊取的風(fēng)險(xiǎn),并且攻擊者還可能篡改相關(guān)的請(qǐng)求參數(shù),極大地影響了接口調(diào)用的安全性。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)的目的在于提出一種接口調(diào)用方法和裝置,來(lái)解決以上背景技術(shù)部分提到的技術(shù)問(wèn)題。
第一方面,本申請(qǐng)?zhí)峁┝艘环N接口調(diào)用方法,所述方法包括:接收接口調(diào)用請(qǐng)求;對(duì)所述接口調(diào)用請(qǐng)求進(jìn)行安全校驗(yàn),所述安全校驗(yàn)包括參數(shù)簽名校驗(yàn)和消息重放攻擊校驗(yàn);若所述安全校驗(yàn)成功,則對(duì)所述接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)。
在一些實(shí)施例中,所述方法還包括:在接收所述接口調(diào)用請(qǐng)求的同時(shí),接收程序標(biāo)識(shí)、隨機(jī)數(shù)、時(shí)間戳、業(yè)務(wù)請(qǐng)求參數(shù)和待校驗(yàn)參數(shù) 簽名。
在一些實(shí)施例中,對(duì)所述接口調(diào)用請(qǐng)求進(jìn)行所述參數(shù)簽名校驗(yàn),包括:對(duì)所述程序標(biāo)識(shí)、隨機(jī)數(shù)、時(shí)間戳、業(yè)務(wù)請(qǐng)求參數(shù),以及分配給接口調(diào)用端的令牌進(jìn)行加密運(yùn)算,得到基準(zhǔn)參數(shù)簽名;若所述待校驗(yàn)參數(shù)簽名與所述基準(zhǔn)參數(shù)簽名相匹配,則確認(rèn)所述參數(shù)簽名校驗(yàn)成功。
在一些實(shí)施例中,對(duì)所述接口調(diào)用請(qǐng)求進(jìn)行所述消息重放攻擊校驗(yàn),包括:按照預(yù)定的時(shí)間周期,對(duì)生成所述隨機(jī)數(shù)的數(shù)據(jù)庫(kù)進(jìn)行更新;檢測(cè)接收的所述隨機(jī)數(shù)是否包括在與所述時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)庫(kù)內(nèi);若是,則確認(rèn)所述消息重放攻擊校驗(yàn)成功。
在一些實(shí)施例中,所述方法還包括:確定與所述程序標(biāo)識(shí)對(duì)應(yīng)的敏感數(shù)據(jù);判斷對(duì)所述接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)的響應(yīng)數(shù)據(jù)中,是否包含所述敏感數(shù)據(jù);若是,則屏蔽所述響應(yīng)數(shù)據(jù)中的所述敏感數(shù)據(jù)。
在一些實(shí)施例中,所述安全校驗(yàn)還包括:網(wǎng)絡(luò)地址校驗(yàn)、超時(shí)校驗(yàn)、訪問(wèn)次數(shù)校驗(yàn)和訪問(wèn)權(quán)限校驗(yàn)中的一項(xiàng)或多項(xiàng)。
第二方面,本申請(qǐng)?zhí)峁┝艘环N接口調(diào)用裝置,所述裝置包括:接收模塊,用于接收接口調(diào)用請(qǐng)求;校驗(yàn)?zāi)K,用于對(duì)所述接口調(diào)用請(qǐng)求進(jìn)行安全校驗(yàn),所述安全校驗(yàn)包括參數(shù)簽名校驗(yàn)和消息重放攻擊校驗(yàn);響應(yīng)模塊,用于若所述安全校驗(yàn)成功,則對(duì)所述接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)。
在一些實(shí)施例中,所述接收模塊進(jìn)一步用于:在接收所述接口調(diào)用請(qǐng)求的同時(shí),接收程序標(biāo)識(shí)、隨機(jī)數(shù)、時(shí)間戳、業(yè)務(wù)請(qǐng)求參數(shù)和待校驗(yàn)參數(shù)簽名。
在一些實(shí)施例中,所述校驗(yàn)?zāi)K包括:加密單元,用于對(duì)所述程序標(biāo)識(shí)、隨機(jī)數(shù)、時(shí)間戳、業(yè)務(wù)請(qǐng)求參數(shù),以及分配給接口調(diào)用端的令牌進(jìn)行加密運(yùn)算,得到基準(zhǔn)參數(shù)簽名;匹配單元,用于若所述待校驗(yàn)參數(shù)簽名與所述基準(zhǔn)參數(shù)簽名相匹配,則確認(rèn)所述參數(shù)簽名校驗(yàn)成功。
在一些實(shí)施例中,所述校驗(yàn)?zāi)K包括:更新單元,用于按照預(yù)定的時(shí)間周期,對(duì)生成所述隨機(jī)數(shù)的數(shù)據(jù)庫(kù)進(jìn)行更新;檢測(cè)單元,用于 檢測(cè)接收的所述隨機(jī)數(shù)是否包括在與所述時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)庫(kù)內(nèi);確認(rèn)單元,用于若是,則確認(rèn)所述消息重放攻擊校驗(yàn)成功。
在一些實(shí)施例中,所述裝置還包括:確定模塊,用于確定與所述程序標(biāo)識(shí)對(duì)應(yīng)的敏感數(shù)據(jù);判斷模塊,用于判斷對(duì)所述接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)的響應(yīng)數(shù)據(jù)中,是否包含所述敏感數(shù)據(jù);屏蔽模塊,用于若是,則屏蔽所述響應(yīng)數(shù)據(jù)中的所述敏感數(shù)據(jù)。
在一些實(shí)施例中,所述安全校驗(yàn)還包括:網(wǎng)絡(luò)地址校驗(yàn)、超時(shí)校驗(yàn)、訪問(wèn)次數(shù)校驗(yàn)和訪問(wèn)權(quán)限校驗(yàn)中的一項(xiàng)或多項(xiàng)。
本申請(qǐng)?zhí)峁┑慕涌谡{(diào)用方法和裝置,在接收到接口調(diào)用請(qǐng)求后,可以對(duì)該接口調(diào)用請(qǐng)求進(jìn)行參數(shù)簽名校驗(yàn)和消息重放攻擊校驗(yàn),只有當(dāng)上述兩類(lèi)校驗(yàn)都通過(guò)時(shí),才對(duì)上述接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)。通過(guò)兩種校驗(yàn)方式同時(shí)對(duì)接口調(diào)用請(qǐng)求的安全性進(jìn)行驗(yàn)證,可以明顯提高接口調(diào)用的安全性。
附圖說(shuō)明
通過(guò)閱讀參照以下附圖所作的對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本申請(qǐng)的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:
圖1是本申請(qǐng)可以應(yīng)用于其中的示例性系統(tǒng)架構(gòu)圖;
圖2是本申請(qǐng)接口調(diào)用方法的一個(gè)實(shí)施例的流程圖;
圖3是本申請(qǐng)接口調(diào)用方法的另一個(gè)實(shí)施例的流程圖;
圖4是本申請(qǐng)接口調(diào)用裝置的一個(gè)實(shí)施例的結(jié)構(gòu)示意圖;
圖5是適于用來(lái)實(shí)現(xiàn)本申請(qǐng)實(shí)施例的終端設(shè)備或服務(wù)器的計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對(duì)本申請(qǐng)作進(jìn)一步的詳細(xì)說(shuō)明。可以理解的是,此處所描述的具體實(shí)施例僅僅用于解釋相關(guān)發(fā)明,而非對(duì)該發(fā)明的限定。另外還需要說(shuō)明的是,為了便于描述,附圖中僅示出了與有關(guān)發(fā)明相關(guān)的部分。
需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例 中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來(lái)詳細(xì)說(shuō)明本申請(qǐng)。
圖1示出了可以應(yīng)用本申請(qǐng)的接口調(diào)用方法或接口調(diào)用裝置的實(shí)施例的示例性系統(tǒng)架構(gòu)100。
如圖1所示,系統(tǒng)架構(gòu)100可以包括終端設(shè)備101、102,網(wǎng)絡(luò)103和服務(wù)器104、105。網(wǎng)絡(luò)103可以在終端設(shè)備101、102和服務(wù)器104、105之間提供通信鏈路的介質(zhì),也可以在終端設(shè)備101和102之間或服務(wù)器104和105之間提供通信鏈路的介質(zhì)。網(wǎng)絡(luò)103可以包括各種連接類(lèi)型,例如有線、無(wú)線通信鏈路或者光纖電纜等等。
用戶(hù)可以使用終端設(shè)備101、102通過(guò)網(wǎng)絡(luò)103與服務(wù)器104、105交互,以接收或發(fā)送消息等。終端設(shè)備101、102上可以安裝有各種通訊客戶(hù)端應(yīng)用,例如電子商務(wù)類(lèi)應(yīng)用、網(wǎng)頁(yè)瀏覽器應(yīng)用、搜索類(lèi)應(yīng)用、即時(shí)通信工具、郵箱客戶(hù)端、社交平臺(tái)軟件等。這些應(yīng)用可以開(kāi)放部分http接口給第三方系統(tǒng)進(jìn)行調(diào)用。
終端設(shè)備101、102可以是各種電子設(shè)備,包括但不限于智能手機(jī)、平板電腦、電子書(shū)閱讀器、mp3播放器(movingpictureexpertsgroupaudiolayeriii,動(dòng)態(tài)影像專(zhuān)家壓縮標(biāo)準(zhǔn)音頻層面3)、mp4(movingpictureexpertsgroupaudiolayeriv,動(dòng)態(tài)影像專(zhuān)家壓縮標(biāo)準(zhǔn)音頻層面4)播放器、膝上型便攜計(jì)算機(jī)和臺(tái)式計(jì)算機(jī)等等。
服務(wù)器104、105可以是提供各種服務(wù)的服務(wù)器,例如對(duì)終端設(shè)備101、102上運(yùn)行的應(yīng)用提供支持的后臺(tái)服務(wù)器。當(dāng)終端設(shè)備101、102上運(yùn)行的第一應(yīng)用需要調(diào)用第二應(yīng)用的接口時(shí),第一應(yīng)用的服務(wù)器例如服務(wù)器104,可以向第二應(yīng)用的服務(wù)器例如服務(wù)器105發(fā)起接口調(diào)用請(qǐng)求,服務(wù)器105可以通過(guò)網(wǎng)絡(luò)103接收該接口調(diào)用請(qǐng)求。
需要說(shuō)明的是,本申請(qǐng)實(shí)施例所提供的接口調(diào)用方法一般由服務(wù)器104、105執(zhí)行,相應(yīng)地,接口調(diào)用裝置一般設(shè)置于服務(wù)器104、105中。
應(yīng)該理解,圖1中的終端設(shè)備、網(wǎng)絡(luò)和服務(wù)器的數(shù)目?jī)H僅是示意性的。根據(jù)實(shí)現(xiàn)需要,可以具有任意數(shù)目的終端設(shè)備、網(wǎng)絡(luò)和服務(wù)器。
繼續(xù)參考圖2,示出了根據(jù)本申請(qǐng)的接口調(diào)用方法的一個(gè)實(shí)施例 的流程200。所述的接口調(diào)用方法,包括以下步驟:
步驟201,接收接口調(diào)用請(qǐng)求。
在本實(shí)施例中,接口調(diào)用方法運(yùn)行于其上的電子設(shè)備(例如圖1所示的服務(wù)器)可以作為接口提供端,通過(guò)有線連接方式或者無(wú)線連接方式,接收接口調(diào)用端(例如其他服務(wù)器或終端設(shè)備)發(fā)送的接口調(diào)用請(qǐng)求。
在跨平臺(tái)、跨語(yǔ)言的不同軟件程序間,經(jīng)常存在進(jìn)行數(shù)據(jù)交互的需求。在實(shí)踐中,可以通過(guò)接口調(diào)用的方式來(lái)實(shí)現(xiàn)不同軟件模塊間的數(shù)據(jù)交互。軟件程序可以將自身的某些服務(wù)以http應(yīng)用程序接口(applicationprograminterface,api)的方式開(kāi)放出來(lái),供外部的第三方系統(tǒng)調(diào)用,從而通過(guò)這種方式拓展自身業(yè)務(wù)能力的應(yīng)用范圍。當(dāng)某一個(gè)應(yīng)用程序需要調(diào)用其他應(yīng)用程序的接口時(shí),就可以向這個(gè)接口的提供端發(fā)送一個(gè)接口調(diào)用請(qǐng)求。具體地,可以根據(jù)接口的名稱(chēng)和地址等信息,將接口調(diào)用請(qǐng)求發(fā)送給相應(yīng)的接口提供端。
在本實(shí)施例的一種可選實(shí)現(xiàn)方式中,在接收上述接口調(diào)用請(qǐng)求的同時(shí),還可以通過(guò)有線連接方式或者無(wú)線連接方式,接收程序標(biāo)識(shí)、隨機(jī)數(shù)、時(shí)間戳、業(yè)務(wù)請(qǐng)求參數(shù)和待校驗(yàn)參數(shù)簽名。具體地,接口的提供端在接收上述接口調(diào)用請(qǐng)求的同時(shí),還會(huì)接收與該接口調(diào)用請(qǐng)求相關(guān)的一些參數(shù),包括程序標(biāo)識(shí)、隨機(jī)數(shù)、時(shí)間戳、業(yè)務(wù)請(qǐng)求參數(shù)和待校驗(yàn)參數(shù)簽名等。
程序標(biāo)識(shí)即appid,用于對(duì)發(fā)送接收調(diào)用請(qǐng)求的軟件程序即接口的調(diào)用者進(jìn)行標(biāo)識(shí)。隨機(jī)數(shù)可以是由接口的調(diào)用端直接隨機(jī)生成的一個(gè)數(shù),也可以是從一個(gè)預(yù)設(shè)的隨機(jī)數(shù)數(shù)據(jù)庫(kù)中選取的一個(gè)數(shù)。時(shí)間戳可以用于記錄發(fā)送上述接口調(diào)用請(qǐng)求的時(shí)間信息。業(yè)務(wù)請(qǐng)求參數(shù)可以用于記載和接口請(qǐng)求相關(guān)的業(yè)務(wù)信息。例如,當(dāng)接口請(qǐng)求是要求登陸進(jìn)某個(gè)系統(tǒng)時(shí),業(yè)務(wù)請(qǐng)求參數(shù)可以包括用戶(hù)名和相應(yīng)的登陸密碼。
待校驗(yàn)參數(shù)簽名的值可以是通過(guò)對(duì)上述appid、隨機(jī)數(shù)、時(shí)間戳、業(yè)務(wù)請(qǐng)求參數(shù)和token進(jìn)行加密運(yùn)算得到。其中,合法的token是由接口提供端預(yù)先分配給合法的接口調(diào)用端的,每個(gè)合法的接口調(diào)用端都可以對(duì)應(yīng)唯一的token。而非法的接口調(diào)用端則無(wú)法得到合法的 token。需要說(shuō)明的是,本實(shí)施例中的加密運(yùn)算可以是現(xiàn)有技術(shù)中常用的加密算法,例如md5(message-digestalgorithm5,信息-摘要算法5)。
需要指出的是,上述無(wú)線連接方式可以包括但不限于3g/4g連接、wifi連接、藍(lán)牙連接、wimax連接、zigbee連接、uwb(ultrawideband)連接、以及其他現(xiàn)在已知或?qū)?lái)開(kāi)發(fā)的無(wú)線連接方式。
步驟202,對(duì)接口調(diào)用請(qǐng)求進(jìn)行安全校驗(yàn),安全校驗(yàn)包括參數(shù)簽名校驗(yàn)和消息重放攻擊校驗(yàn)。
在本實(shí)施例中,上述電子設(shè)備(例如圖1所示的服務(wù)器)在接收到接口調(diào)用請(qǐng)求后,可以首先對(duì)該請(qǐng)求進(jìn)行安全校驗(yàn),以確定是否對(duì)該請(qǐng)求進(jìn)行響應(yīng)。具體地,本實(shí)施例中進(jìn)行的安全校驗(yàn)方法可以包括兩種,即參數(shù)簽名校驗(yàn)和消息重放攻擊校驗(yàn)。其中,參數(shù)簽名校驗(yàn)主要用于驗(yàn)證接口調(diào)用端的token是否合法,而消息重放攻擊校驗(yàn)主要用于驗(yàn)證接口調(diào)用請(qǐng)求是否為惡意或欺詐性地重復(fù)數(shù)據(jù)。
在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,對(duì)上述接口調(diào)用請(qǐng)求進(jìn)行參數(shù)簽名校驗(yàn)可以包括:對(duì)上述程序標(biāo)識(shí)、隨機(jī)數(shù)、時(shí)間戳、業(yè)務(wù)請(qǐng)求參數(shù),以及分配給接口調(diào)用端的令牌進(jìn)行加密運(yùn)算,得到基準(zhǔn)參數(shù)簽名;若待校驗(yàn)參數(shù)簽名與基準(zhǔn)參數(shù)簽名相匹配,則確認(rèn)參數(shù)簽名校驗(yàn)成功。在本實(shí)施例中,接口提供端在接收到接口調(diào)用端所發(fā)送的程序標(biāo)識(shí)、隨機(jī)數(shù)、時(shí)間戳、業(yè)務(wù)請(qǐng)求參數(shù)和待校驗(yàn)參數(shù)簽名后,可以首先對(duì)程序標(biāo)識(shí)、隨機(jī)數(shù)、時(shí)間戳、業(yè)務(wù)請(qǐng)求參數(shù)和接口提供端預(yù)先分配給接口調(diào)用端的合法令牌即token進(jìn)行加密運(yùn)算,得到基準(zhǔn)參數(shù)簽名。
需要說(shuō)明的是,基準(zhǔn)參數(shù)簽名加密算法應(yīng)該與接收到的待校驗(yàn)參數(shù)簽名的加密算法保持一致。由于上述兩個(gè)簽名在進(jìn)行加密時(shí),所使用的程序標(biāo)識(shí)、隨機(jī)數(shù)、時(shí)間戳和業(yè)務(wù)請(qǐng)求參數(shù)是完全一樣的,因此在將二者進(jìn)行匹配時(shí),就可以確定出二者的token是否一致。具體地,如果接口提供端接收到的待校驗(yàn)參數(shù)簽名,與自己計(jì)算出的基準(zhǔn)參數(shù)簽名匹配,也就是說(shuō)二者完全一致,則說(shuō)明接口調(diào)用端使用的token就是由接口提供端分配的合法token,因此數(shù)簽名校驗(yàn)成功,可以對(duì) 接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)。相反地,如果待校驗(yàn)參數(shù)簽名與基準(zhǔn)參數(shù)簽名不匹配,則說(shuō)明接口調(diào)用端使用的token不是由接口提供端分配的合法token,而是非法的token,此時(shí)數(shù)簽名校驗(yàn)失敗,不能對(duì)接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)。
在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,對(duì)上述接口調(diào)用請(qǐng)求進(jìn)行消息重放攻擊校驗(yàn)可以包括:按照預(yù)定的時(shí)間周期,對(duì)生成隨機(jī)數(shù)的數(shù)據(jù)庫(kù)進(jìn)行更新;檢測(cè)接收的隨機(jī)數(shù)是否包括在與時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)庫(kù)內(nèi);若是,則確認(rèn)消息重放攻擊校驗(yàn)成功。重放攻擊又稱(chēng)重播攻擊、回放攻擊或新鮮性攻擊,是指攻擊者發(fā)送一個(gè)接口提供者已接收過(guò)的接口調(diào)用請(qǐng)求,來(lái)達(dá)到欺騙系統(tǒng)的目的,主要用于身份認(rèn)證過(guò)程,可以破壞認(rèn)證的正確性。這種攻擊會(huì)不斷惡意或欺詐性地重復(fù)一個(gè)有效的數(shù)據(jù)傳輸,攻擊者利用網(wǎng)絡(luò)監(jiān)聽(tīng)或者其他方式盜取合法的接口調(diào)用請(qǐng)求,之后再把它重新發(fā)給接口提供者。從這個(gè)解釋上理解,加密可以有效防止會(huì)話劫持,但是卻防止不了重放攻擊。因此,在本實(shí)施例中還需要對(duì)接口調(diào)用請(qǐng)求進(jìn)行消息重放攻擊校驗(yàn)。
具體地,當(dāng)接口調(diào)用端發(fā)送的隨機(jī)數(shù)是通過(guò)一個(gè)隨機(jī)數(shù)的數(shù)據(jù)庫(kù)生成時(shí),可以按照一定的時(shí)間周期對(duì)這個(gè)數(shù)據(jù)庫(kù)進(jìn)行更新。例如,可以每一分鐘更新一次數(shù)據(jù)庫(kù)。這樣在接收到隨機(jī)數(shù)和時(shí)間戳后,可以首先確定與這個(gè)時(shí)間戳所對(duì)應(yīng)的數(shù)據(jù)庫(kù),然后再檢測(cè)隨機(jī)數(shù)是否在該數(shù)據(jù)庫(kù)中。如果某個(gè)接口調(diào)用請(qǐng)求是通過(guò)消息重放攻擊發(fā)送的,說(shuō)明攻擊者預(yù)先截取了一個(gè)之前的接口調(diào)用請(qǐng)求并將其再次發(fā)送給接口提供端,再次發(fā)送時(shí)的時(shí)間戳與原始接口調(diào)用請(qǐng)求的時(shí)間戳肯定是不一樣的,但是兩次使用的隨機(jī)數(shù)卻是一樣的。因此,可以通過(guò)驗(yàn)證隨機(jī)數(shù)是否包括在與時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)庫(kù)內(nèi),來(lái)驗(yàn)證接口調(diào)用請(qǐng)求不是通過(guò)消息重放攻擊發(fā)送的。當(dāng)隨機(jī)數(shù)包括在與時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)庫(kù)內(nèi)時(shí),說(shuō)明隨機(jī)數(shù)與時(shí)間戳是對(duì)應(yīng)的,此時(shí)的接口調(diào)用請(qǐng)求是合法的,可以確認(rèn)消息重放攻擊校驗(yàn)成功。當(dāng)隨機(jī)數(shù)不包括在與時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)庫(kù)內(nèi)時(shí),說(shuō)明隨機(jī)數(shù)與時(shí)間戳是對(duì)不上的,此時(shí)的接口調(diào)用請(qǐng)求很可能是通過(guò)消息重放攻擊再次發(fā)送的,因此可以確認(rèn)消息重放攻擊校驗(yàn)失敗。
步驟203,若安全校驗(yàn)成功,則對(duì)接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)。
在本實(shí)施例中,接口調(diào)用方法運(yùn)行于其上的電子設(shè)備在上述步驟202中進(jìn)行的安全校驗(yàn)成功后,也就是參數(shù)簽名校驗(yàn)和消息重放攻擊校驗(yàn)都成功后,才能對(duì)上述接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)。而如果參數(shù)簽名校驗(yàn)和消息重放攻擊校驗(yàn)中有任意一項(xiàng)校驗(yàn)不成功,則認(rèn)為安全校驗(yàn)失敗,而不能對(duì)上述接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)。
具體在對(duì)接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)時(shí),可以向接口調(diào)用端開(kāi)放相應(yīng)接口對(duì)應(yīng)的功能模塊,通過(guò)該功能模塊對(duì)接口調(diào)用端發(fā)送來(lái)的業(yè)務(wù)請(qǐng)求參數(shù)進(jìn)行處理,并將處理結(jié)果返回給接口調(diào)用端。
本申請(qǐng)的上述實(shí)施例提供的接口調(diào)用方法,在接收到接口調(diào)用請(qǐng)求后,可以對(duì)該接口調(diào)用請(qǐng)求進(jìn)行參數(shù)簽名校驗(yàn)和消息重放攻擊校驗(yàn),只有當(dāng)上述兩類(lèi)校驗(yàn)都通過(guò)時(shí),才對(duì)上述接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)。通過(guò)兩種校驗(yàn)方式同時(shí)對(duì)接口調(diào)用請(qǐng)求的安全性進(jìn)行驗(yàn)證,可以明顯提高接口調(diào)用的安全性。
進(jìn)一步繼續(xù)參考圖3,示出了根據(jù)本申請(qǐng)的接口調(diào)用方法的另一個(gè)實(shí)施例的流程300。所述的接口調(diào)用方法,包括以下步驟:
步驟301,接收接口調(diào)用請(qǐng)求。
在本實(shí)施例中,接口調(diào)用方法運(yùn)行于其上的電子設(shè)備(例如圖1所示的服務(wù)器)可以作為接口提供端,通過(guò)有線連接方式或者無(wú)線連接方式,接收接口調(diào)用端(例如其他服務(wù)器或終端設(shè)備)發(fā)送的接口調(diào)用請(qǐng)求。
在本實(shí)施例中,在接收上述接口調(diào)用請(qǐng)求的同時(shí),還可以接收由接口調(diào)用端發(fā)送的程序標(biāo)識(shí)、隨機(jī)數(shù)、時(shí)間戳、業(yè)務(wù)請(qǐng)求參數(shù)和待校驗(yàn)參數(shù)簽名。
步驟302,對(duì)接口調(diào)用請(qǐng)求進(jìn)行安全校驗(yàn),安全校驗(yàn)包括參數(shù)簽名校驗(yàn)和消息重放攻擊校驗(yàn)。
在本實(shí)施例中,上述電子設(shè)備(例如圖1所示的服務(wù)器)在接收到接口調(diào)用請(qǐng)求后,可以首先對(duì)該請(qǐng)求進(jìn)行安全校驗(yàn),以確定是否對(duì)該請(qǐng)求進(jìn)行響應(yīng)。具體地,本實(shí)施例中進(jìn)行的安全校驗(yàn)包括兩種即參 數(shù)簽名校驗(yàn)和消息重放攻擊校驗(yàn)。其中,參數(shù)簽名校驗(yàn)主要用于驗(yàn)證接口調(diào)用端的token是否合法,而消息重放攻擊校驗(yàn)主要驗(yàn)證接口調(diào)用請(qǐng)求是否為惡意或欺詐性地重復(fù)數(shù)據(jù)。其具體校驗(yàn)方法與圖2中的步驟202相同,在此不再贅述。
在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,上述安全校驗(yàn)還可以包括:網(wǎng)絡(luò)地址校驗(yàn)、超時(shí)校驗(yàn)、訪問(wèn)次數(shù)校驗(yàn)和訪問(wèn)權(quán)限校驗(yàn)中的一項(xiàng)或多項(xiàng)。
網(wǎng)絡(luò)地址就是指ip(internetprotocol,網(wǎng)絡(luò)協(xié)議)地址。在進(jìn)行網(wǎng)絡(luò)地址校驗(yàn)時(shí),可以判斷接口調(diào)用端的網(wǎng)絡(luò)地址是否在預(yù)先設(shè)置的ip地址白名單內(nèi)。若是,則可以認(rèn)為網(wǎng)絡(luò)地址校驗(yàn)成功,否則網(wǎng)絡(luò)地址校驗(yàn)失敗。
在進(jìn)行超時(shí)校驗(yàn)時(shí),可以將接收到的時(shí)間戳與接口提供端的本地時(shí)間進(jìn)行比較,如果時(shí)間戳相對(duì)于本地時(shí)間的超時(shí)在允許的超時(shí)時(shí)間范圍(例如5秒)內(nèi),則可以認(rèn)為超時(shí)校驗(yàn)成功,否則超時(shí)校驗(yàn)失敗。
在進(jìn)行訪問(wèn)次數(shù)校驗(yàn)時(shí),接口提供端可以對(duì)接口調(diào)用端的每次請(qǐng)求操作進(jìn)行記錄,并判斷接口調(diào)用端的請(qǐng)求次數(shù)是否超出預(yù)定的請(qǐng)求次數(shù)。若未超出,則可以認(rèn)為訪問(wèn)次數(shù)校驗(yàn)成功,否則訪問(wèn)次數(shù)校驗(yàn)失敗。
在進(jìn)行訪問(wèn)權(quán)限校驗(yàn)時(shí),可以通過(guò)接收到的程序標(biāo)識(shí)確定與該標(biāo)識(shí)對(duì)應(yīng)的接口權(quán)限,若當(dāng)前接收到的接口調(diào)用請(qǐng)求在該權(quán)限范圍內(nèi),則可以認(rèn)為訪問(wèn)權(quán)限校驗(yàn)成功,否則訪問(wèn)權(quán)限校驗(yàn)失敗。
需要說(shuō)明的,上述ip地址白名單、允許的超時(shí)時(shí)間范圍、預(yù)定的請(qǐng)求次數(shù)以及接口權(quán)限的具體內(nèi)容都可以由用戶(hù)根據(jù)實(shí)際需要自行設(shè)置,本申請(qǐng)對(duì)此不做限定。
步驟303,若安全校驗(yàn)成功,則對(duì)接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)。
在本實(shí)施例中,上述電子設(shè)備在接口調(diào)用方法運(yùn)行于其上的電子設(shè)備在上述步驟302中進(jìn)行的安全校驗(yàn)成功后,也就是參數(shù)簽名校驗(yàn)和消息重放攻擊校驗(yàn),以及網(wǎng)絡(luò)地址校驗(yàn)、超時(shí)校驗(yàn)、訪問(wèn)次數(shù)校驗(yàn)和訪問(wèn)權(quán)限校驗(yàn)中的一項(xiàng)或多項(xiàng)都成功后,才能對(duì)上述接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)。而如果其中有任意一項(xiàng)校驗(yàn)不成功,則認(rèn)為安全校驗(yàn)失敗, 而不能對(duì)上述接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)。
步驟304,確定與程序標(biāo)識(shí)對(duì)應(yīng)的敏感數(shù)據(jù)。
在本實(shí)施例中,接口調(diào)用方法運(yùn)行于其上的電子設(shè)備在對(duì)接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)時(shí),還可以進(jìn)一步確定與程序標(biāo)識(shí)對(duì)應(yīng)的敏感數(shù)據(jù)。具體地,可以預(yù)先設(shè)置一個(gè)程序標(biāo)識(shí)與敏感數(shù)據(jù)的對(duì)應(yīng)關(guān)系表,在接收到接口調(diào)用端發(fā)送的程序標(biāo)識(shí)后,就可以從上述對(duì)應(yīng)關(guān)系表中獲取相關(guān)的敏感數(shù)據(jù)。
步驟305,判斷對(duì)接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)的響應(yīng)數(shù)據(jù)中,是否包含敏感數(shù)據(jù)。
在本實(shí)施例中,當(dāng)在上述步驟304中確定出的與程序標(biāo)識(shí)對(duì)應(yīng)的敏感數(shù)據(jù)后,可以進(jìn)一步判斷對(duì)接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)的響應(yīng)數(shù)據(jù)中,是否包含敏感數(shù)據(jù)。具體地,可以將敏感數(shù)據(jù)與響應(yīng)數(shù)據(jù)進(jìn)行匹配,若匹配成功,則可以認(rèn)為響應(yīng)數(shù)據(jù)中包含有敏感數(shù)據(jù)。
步驟306,若是,則屏蔽響應(yīng)數(shù)據(jù)中的敏感數(shù)據(jù)。
在本實(shí)施例中,上述電子設(shè)備在判斷出響應(yīng)數(shù)據(jù)中包含有敏感數(shù)據(jù)后,可以進(jìn)一步將響應(yīng)數(shù)據(jù)中的敏感數(shù)據(jù)進(jìn)行屏蔽,以實(shí)現(xiàn)對(duì)敏感數(shù)據(jù)進(jìn)行過(guò)濾的目的。
應(yīng)當(dāng)注意,盡管在附圖中以特定順序描述了本發(fā)明方法的操作,但是,這并非要求或者暗示必須按照該特定順序來(lái)執(zhí)行這些操作,或是必須執(zhí)行全部所示的操作才能實(shí)現(xiàn)期望的結(jié)果。相反,流程圖中描繪的步驟可以改變執(zhí)行順序。附加地或備選地,可以省略某些步驟,將多個(gè)步驟合并為一個(gè)步驟執(zhí)行,和/或?qū)⒁粋€(gè)步驟分解為多個(gè)步驟執(zhí)行。
從圖3中可以看出,與圖2對(duì)應(yīng)的實(shí)施例相比,本實(shí)施例中進(jìn)一步具體描述了在對(duì)接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)時(shí),如何進(jìn)行敏感數(shù)據(jù)過(guò)濾的方法。通過(guò)屏蔽響應(yīng)數(shù)據(jù)中的敏感數(shù)據(jù),能夠進(jìn)一步提高接口調(diào)用的安全性。
進(jìn)一步參考圖4,作為對(duì)上述各圖所示方法的實(shí)現(xiàn),本申請(qǐng)?zhí)峁┝艘环N接口調(diào)用裝置的一個(gè)實(shí)施例,該裝置實(shí)施例與圖2-3所示的方 法實(shí)施例相對(duì)應(yīng),該裝置具體可以應(yīng)用于各種電子設(shè)備中。
如圖4所示,本實(shí)施例所述的接口調(diào)用裝置400包括:接收模塊410、校驗(yàn)?zāi)K420和響應(yīng)模塊430。其中,接收模塊410,用于接收接口調(diào)用請(qǐng)求;校驗(yàn)?zāi)K420,用于對(duì)接口調(diào)用請(qǐng)求進(jìn)行安全校驗(yàn),安全校驗(yàn)包括參數(shù)簽名校驗(yàn)和消息重放攻擊校驗(yàn);響應(yīng)模塊430,用于若安全校驗(yàn)成功,則對(duì)接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)。
在本實(shí)施例中,接口調(diào)用裝置400的接收模塊410可以通過(guò)有線連接方式或者無(wú)線連接方式,接收接口調(diào)用端(例如其他服務(wù)器或終端設(shè)備)發(fā)送的接口調(diào)用請(qǐng)求。
在本實(shí)施例中,接口調(diào)用裝置400的校驗(yàn)?zāi)K420可以首先對(duì)接口調(diào)用請(qǐng)求進(jìn)行安全校驗(yàn),以確定是否對(duì)該請(qǐng)求進(jìn)行響應(yīng)。具體地,本實(shí)施例中進(jìn)行的安全校驗(yàn)包括兩種即參數(shù)簽名校驗(yàn)和消息重放攻擊校驗(yàn)。其中,參數(shù)簽名校驗(yàn)主要用于驗(yàn)證接口調(diào)用端的token是否合法,而消息重放攻擊校驗(yàn)主要驗(yàn)證接口調(diào)用請(qǐng)求是否為惡意或欺詐性地重復(fù)數(shù)據(jù)。
在本實(shí)施例中,接口調(diào)用裝置400的響應(yīng)模塊430,可以在參數(shù)簽名校驗(yàn)和消息重放攻擊校驗(yàn)都成功后,對(duì)上述接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,接收模塊410進(jìn)一步用于:在接收接口調(diào)用請(qǐng)求的同時(shí),接收程序標(biāo)識(shí)、隨機(jī)數(shù)、時(shí)間戳、業(yè)務(wù)請(qǐng)求參數(shù)和待校驗(yàn)參數(shù)簽名。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,校驗(yàn)?zāi)K420包括:加密單元,用于對(duì)程序標(biāo)識(shí)、隨機(jī)數(shù)、時(shí)間戳、業(yè)務(wù)請(qǐng)求參數(shù),以及分配給接口調(diào)用端的令牌進(jìn)行加密運(yùn)算,得到基準(zhǔn)參數(shù)簽名;匹配單元,用于若待校驗(yàn)參數(shù)簽名與基準(zhǔn)參數(shù)簽名相匹配,則確認(rèn)參數(shù)簽名校驗(yàn)成功。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,校驗(yàn)?zāi)K420包括:更新單元,用于按照預(yù)定的時(shí)間周期,對(duì)生成隨機(jī)數(shù)的數(shù)據(jù)庫(kù)進(jìn)行更新;檢測(cè)單元,用于檢測(cè)接收的隨機(jī)數(shù)是否包括在與時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)庫(kù)內(nèi);確認(rèn)單元,用于若是,則確認(rèn)消息重放攻擊校驗(yàn)成功。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,接口調(diào)用裝置400還包括:確定模塊,用于確定與程序標(biāo)識(shí)對(duì)應(yīng)的敏感數(shù)據(jù);判斷模塊,用于判斷對(duì)接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)的響應(yīng)數(shù)據(jù)中,是否包含敏感數(shù)據(jù);屏蔽模塊,用于若是,則屏蔽所述響應(yīng)數(shù)據(jù)中的所述敏感數(shù)據(jù)。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,安全校驗(yàn)還包括:網(wǎng)絡(luò)地址校驗(yàn)、超時(shí)校驗(yàn)、訪問(wèn)次數(shù)校驗(yàn)和訪問(wèn)權(quán)限校驗(yàn)中的一項(xiàng)或多項(xiàng)。
本領(lǐng)域技術(shù)人員可以理解,上述接口調(diào)用裝置400還包括一些其他公知結(jié)構(gòu),例如處理器、存儲(chǔ)器等,為了不必要地模糊本公開(kāi)的實(shí)施例,這些公知的結(jié)構(gòu)在圖4中未示出。
本實(shí)施例所提供的接口調(diào)用裝置,在接收到接口調(diào)用請(qǐng)求后,可以對(duì)該接口調(diào)用請(qǐng)求進(jìn)行參數(shù)簽名校驗(yàn)和消息重放攻擊校驗(yàn),只有當(dāng)上述兩類(lèi)校驗(yàn)都通過(guò)時(shí),才對(duì)上述接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)。通過(guò)兩種校驗(yàn)方式同時(shí)對(duì)接口調(diào)用請(qǐng)求的安全性進(jìn)行驗(yàn)證,可以明顯提高接口調(diào)用的安全性。
下面參考圖5,其示出了適于用來(lái)實(shí)現(xiàn)本申請(qǐng)實(shí)施例的終端設(shè)備或服務(wù)器的計(jì)算機(jī)系統(tǒng)500的結(jié)構(gòu)示意圖。
如圖5所示,計(jì)算機(jī)系統(tǒng)500包括中央處理單元(cpu)501,其可以根據(jù)存儲(chǔ)在只讀存儲(chǔ)器(rom)502中的程序或者從存儲(chǔ)部分508加載到隨機(jī)訪問(wèn)存儲(chǔ)器(ram)503中的程序而執(zhí)行各種適當(dāng)?shù)膭?dòng)作和處理。在ram503中,還存儲(chǔ)有系統(tǒng)500操作所需的各種程序和數(shù)據(jù)。cpu501、rom502以及ram503通過(guò)總線504彼此相連。輸入/輸出(i/o)接口505也連接至總線504。
以下部件連接至i/o接口505:包括鍵盤(pán)、鼠標(biāo)等的輸入部分506;包括諸如陰極射線管(crt)、液晶顯示器(lcd)等以及揚(yáng)聲器等的輸出部分507;包括硬盤(pán)等的存儲(chǔ)部分508;以及包括諸如lan卡、調(diào)制解調(diào)器等的網(wǎng)絡(luò)接口卡的通信部分509。通信部分509經(jīng)由諸如因特網(wǎng)的網(wǎng)絡(luò)執(zhí)行通信處理。驅(qū)動(dòng)器510也根據(jù)需要連接至i/o接口505??刹鹦督橘|(zhì)511,諸如磁盤(pán)、光盤(pán)、磁光盤(pán)、半導(dǎo)體存儲(chǔ)器等等,根據(jù)需要安裝在驅(qū)動(dòng)器510上,以便于從其上讀出的計(jì)算機(jī)程序根據(jù)需要被 安裝入存儲(chǔ)部分508。
特別地,根據(jù)本公開(kāi)的實(shí)施例,上文參考流程圖描述的過(guò)程可以被實(shí)現(xiàn)為計(jì)算機(jī)軟件程序。例如,本公開(kāi)的實(shí)施例包括一種計(jì)算機(jī)程序產(chǎn)品,其包括有形地包含在機(jī)器可讀介質(zhì)上的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序包含用于執(zhí)行流程圖所示的方法的程序代碼。在這樣的實(shí)施例中,該計(jì)算機(jī)程序可以通過(guò)通信部分509從網(wǎng)絡(luò)上被下載和安裝,和/或從可拆卸介質(zhì)511被安裝。
特別地,根據(jù)本公開(kāi)的實(shí)施例,上文參考流程圖描述的過(guò)程可以被實(shí)現(xiàn)為計(jì)算機(jī)軟件程序。例如,本公開(kāi)的實(shí)施例包括一種計(jì)算附圖中的流程圖和框圖,圖示了按照本申請(qǐng)各種實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段、或代碼的一部分,所述模塊、程序段、或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)接連地表示的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專(zhuān)用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專(zhuān)用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
描述于本申請(qǐng)實(shí)施例中所涉及到的模塊可以通過(guò)軟件的方式實(shí)現(xiàn),也可以通過(guò)硬件的方式來(lái)實(shí)現(xiàn)。所描述的模塊也可以設(shè)置在處理器中,例如,可以描述為:一種處理器包括接收模塊、校驗(yàn)?zāi)K和響應(yīng)模塊。其中,這些模塊的名稱(chēng)在某種情況下并不構(gòu)成對(duì)該模塊本身的限定,例如,接收模塊還可以被描述為“用于接收接口調(diào)用請(qǐng)求的模塊”。
作為另一方面,本申請(qǐng)還提供了一種非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì),該非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)可以是上述實(shí)施例中所述裝置中所包含的非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì);也可以是單獨(dú)存在,未裝配入終端中的非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。上述非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)存儲(chǔ)有一個(gè)或者多個(gè)程序,當(dāng)所述一個(gè)或者多個(gè)程序被一個(gè)設(shè)備執(zhí)行時(shí),使得所述 設(shè)備:接收接口調(diào)用請(qǐng)求;對(duì)所述接口調(diào)用請(qǐng)求進(jìn)行安全校驗(yàn),所述安全校驗(yàn)包括參數(shù)簽名校驗(yàn)和消息重放攻擊校驗(yàn);若所述安全校驗(yàn)成功,則對(duì)所述接口調(diào)用請(qǐng)求進(jìn)行響應(yīng)。
以上描述僅為本申請(qǐng)的較佳實(shí)施例以及對(duì)所運(yùn)用技術(shù)原理的說(shuō)明。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本申請(qǐng)中所涉及的發(fā)明范圍,并不限于上述技術(shù)特征的特定組合而成的技術(shù)方案,同時(shí)也應(yīng)涵蓋在不脫離所述發(fā)明構(gòu)思的情況下,由上述技術(shù)特征或其等同特征進(jìn)行任意組合而形成的其它技術(shù)方案。例如上述特征與本申請(qǐng)中公開(kāi)的(但不限于)具有類(lèi)似功能的技術(shù)特征進(jìn)行互相替換而形成的技術(shù)方案。