本發(fā)明涉及網(wǎng)絡(luò)安全訪問(wèn)控制技術(shù),具體涉及一種實(shí)現(xiàn)web前端安全登陸和訪問(wèn)的方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,網(wǎng)絡(luò)信息的安全已被廣泛的關(guān)注,web安全的重點(diǎn)正從服務(wù)器端轉(zhuǎn)移到web前端。伴隨著html5新技術(shù)的興起,web前端的安全問(wèn)題更為突出。例如html5中的新標(biāo)簽屬性、webworkers、webstorage、postmessage、css3等技術(shù)提高了web前端頁(yè)面性能的同時(shí)也帶來(lái)了安全隱患。對(duì)于防御網(wǎng)站攻擊行為的有效措施,一是減少前端頁(yè)面自身漏洞,尤其是html5頁(yè)面新增的部分功能,減少被攻擊的可能性,其二就是在這基礎(chǔ)上,對(duì)所操作系統(tǒng)的用戶信息進(jìn)行處理,保護(hù)敏感信息。由于所有的網(wǎng)絡(luò)攻擊其目的就在于竊取用戶信息,誘導(dǎo)用戶進(jìn)行危險(xiǎn)的操作。因此,保證用戶信息的安全,以及攔截危險(xiǎn)的操作是保證系統(tǒng)安全的關(guān)鍵。
為保證系統(tǒng)的安全訪問(wèn),需要輸入用戶名和密碼進(jìn)行登陸控制,為方便用戶管理,往往通過(guò)特別控制用戶權(quán)限,使不同的角色訪問(wèn)特定的功能頁(yè)面及操作。在經(jīng)過(guò)服務(wù)端對(duì)傳輸?shù)挠脩裘懊艽a等信息驗(yàn)證后,服務(wù)器將成功授權(quán)信息反饋給通過(guò)驗(yàn)證的用戶,從而實(shí)現(xiàn)成功登陸安全訪問(wèn)。然而,傳統(tǒng)技術(shù)中僅僅對(duì)用戶名和密碼進(jìn)行加密傳輸,經(jīng)過(guò)驗(yàn)證后實(shí)現(xiàn)成功登陸的方式仍然存在較大的風(fēng)險(xiǎn):一旦用戶名和密碼被破譯,發(fā)送所破譯的用戶名和密碼到服務(wù)端同樣可能通過(guò)認(rèn)證從而登陸成功。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問(wèn)題是:提供一種實(shí)現(xiàn)web前端安全登陸和訪問(wèn)的方法,提高web前端登陸和訪問(wèn)的安全性。
本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:
一種實(shí)現(xiàn)web前端安全登陸和訪問(wèn)的方法,包括:
a.定義$http請(qǐng)求服務(wù),包括http請(qǐng)求規(guī)則的定義;
b.web前端獲取用戶輸入的登陸信息以及從服務(wù)器獲取的隨機(jī)碼一并進(jìn)行封裝;
c.web前端對(duì)封裝后的數(shù)據(jù)采用rsa公鑰進(jìn)行統(tǒng)一加密;
d.web前端對(duì)加密后的數(shù)據(jù)運(yùn)用定義的http規(guī)則發(fā)送給服務(wù)器;
e.服務(wù)器對(duì)請(qǐng)求規(guī)則進(jìn)行驗(yàn)證,驗(yàn)證通過(guò)后利用rsa私鑰解密數(shù)據(jù)獲得用戶登陸信息及隨機(jī)碼;
f.服務(wù)器對(duì)用戶登陸信息進(jìn)行驗(yàn)證匹配,對(duì)隨機(jī)碼進(jìn)行驗(yàn)證匹配,均通過(guò)后對(duì)用戶登陸授權(quán);
g.web前端在登陸后的訪問(wèn)操作中,通過(guò)判別請(qǐng)求與獲取響應(yīng)的時(shí)間差是否在允許范圍內(nèi)來(lái)保證訪問(wèn)安全性。
作為進(jìn)一步優(yōu)化,步驟a中,所述請(qǐng)求規(guī)則的定義包括:
a1、運(yùn)用angularjs內(nèi)置的請(qǐng)求服務(wù)攔截器,重新定義四個(gè)請(qǐng)求函數(shù);
a2、獲取請(qǐng)求發(fā)送的時(shí)間以及接收請(qǐng)求的時(shí)間,計(jì)算時(shí)間差;
a3、驗(yàn)證所獲得的時(shí)間差是否在預(yù)定范圍之內(nèi);
a4、若在規(guī)定范圍內(nèi)通過(guò)請(qǐng)求成功函數(shù)返回成功信息,否則錯(cuò)誤請(qǐng)求函數(shù)將返回超時(shí)錯(cuò)誤。
作為進(jìn)一步優(yōu)化,所述四個(gè)請(qǐng)求函數(shù)包括:用戶請(qǐng)求函數(shù)、用戶請(qǐng)求錯(cuò)誤函數(shù)、用戶響應(yīng)函數(shù)及用戶響應(yīng)錯(cuò)誤函數(shù)。
作為進(jìn)一步優(yōu)化,步驟b中,所述登陸信息包括用戶名和密碼,在輸入用戶名后從服務(wù)器獲取隨機(jī)碼信息。
本發(fā)明的有益效果是:
本發(fā)明將用戶信息封裝到一起,生成一個(gè)信息的集合,對(duì)此信息集統(tǒng)一加密,增加破解難度,另外還封裝一組隨機(jī)數(shù)解密后將于服務(wù)端數(shù)據(jù)匹配提供信息驗(yàn)證的雙重保證;
此外,在服務(wù)端進(jìn)行信息解密驗(yàn)證之前,還先對(duì)請(qǐng)求規(guī)則進(jìn)行驗(yàn)證,即使單一的用戶信息泄露,因無(wú)法同時(shí)得到請(qǐng)求規(guī)則,從而驗(yàn)證不會(huì)通過(guò),以此保證系統(tǒng)安全。
附圖說(shuō)明
圖1為本發(fā)明的實(shí)施例中實(shí)現(xiàn)web前端安全登陸和訪問(wèn)的方法流程圖。
具體實(shí)施方式
本發(fā)明旨在提供一種實(shí)現(xiàn)web前端安全登陸和訪問(wèn)的方法,提高web前端登陸和訪問(wèn)的安全性。在具體實(shí)施上,為提高登陸和訪問(wèn)安全性,本發(fā)明中的方案包括以下處理手段:
1.用戶信息加密:
為了避免用戶信息在傳輸過(guò)程中失竊,對(duì)系統(tǒng)信息入口處所獲取的用戶名密碼等信息進(jìn)行加密處理,由于在一般情況下,登錄系統(tǒng)會(huì)顯示當(dāng)前用戶信息,包括用戶名或賬號(hào),此時(shí)如果對(duì)用戶信息分別加密,一旦用戶信息被截獲相當(dāng)于得到用戶名和加密后的用戶密碼,發(fā)送所破獲的用戶名和加密密碼到服務(wù)端同樣可能通過(guò)認(rèn)證從而登陸成功,因此,本發(fā)明將用戶信息封裝到一起,生成一個(gè)信息的集合,對(duì)此信息集統(tǒng)一加密,增加破解難度,另外還封裝一組隨機(jī)數(shù)解密后將于服務(wù)端數(shù)據(jù)匹配提供信息驗(yàn)證的雙重保證。
2.請(qǐng)求方式封裝:
在angular中提供一種$http請(qǐng)求服務(wù),用于前端與后臺(tái)的數(shù)據(jù)請(qǐng)求交互過(guò)程,其本質(zhì)上使用xmlhttprequest或jsonp進(jìn)行后臺(tái)的數(shù)據(jù)交互。在此服務(wù)中內(nèi)置了四個(gè)請(qǐng)求攔截函數(shù),包括用戶請(qǐng)求函數(shù)、用戶請(qǐng)求錯(cuò)誤函數(shù)、用戶響應(yīng)函數(shù)及用戶響應(yīng)錯(cuò)誤函數(shù);在與后臺(tái)的請(qǐng)求與交互過(guò)程中,使我們方便在請(qǐng)求和響應(yīng)期間做一些預(yù)處理操作,比如:判斷是否符合發(fā)送請(qǐng)求的條件,為服務(wù)器減負(fù),判斷是否符合成功響應(yīng)的條件,為用戶權(quán)限判斷增加屏障。
本發(fā)明即采用$http請(qǐng)求的這一自身優(yōu)勢(shì),分別在請(qǐng)求函數(shù)內(nèi)獲取開始請(qǐng)求時(shí)間,在響應(yīng)函數(shù)內(nèi)獲取開始響應(yīng)時(shí)間,通過(guò)計(jì)算兩者的時(shí)間差,驗(yàn)證請(qǐng)求是否合法,從而返回驗(yàn)證信息。用戶在登錄請(qǐng)求中可以通過(guò)加密解密思想保護(hù)信息,在通過(guò)接口信息獲取訪問(wèn)權(quán)限驗(yàn)證時(shí)通過(guò)特殊的請(qǐng)求方式判別時(shí)間差是否在允許范圍內(nèi),從而提供用戶登錄后的訪問(wèn)安全性。
下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明的方案做進(jìn)一步的描述:
如圖1所示,本實(shí)施例中的實(shí)現(xiàn)web前端安全登陸和訪問(wèn)的方法包括以下步驟:
1、定義$http請(qǐng)求服務(wù),包括http請(qǐng)求規(guī)則的定義;
其中,請(qǐng)求規(guī)則的定義包括:
1)運(yùn)用angularjs內(nèi)置的請(qǐng)求服務(wù)攔截器,重新定義四個(gè)請(qǐng)求函數(shù);
2)獲取請(qǐng)求發(fā)送的時(shí)間以及接收請(qǐng)求的時(shí)間,計(jì)算時(shí)間差;
3)驗(yàn)證所獲得的時(shí)間差是否在預(yù)定范圍之內(nèi);
4)若在規(guī)定范圍內(nèi)通過(guò)請(qǐng)求成功函數(shù)返回成功信息,否則錯(cuò)誤請(qǐng)求函數(shù)將返回超時(shí)錯(cuò)誤。
2、web前端獲取用戶輸入的登陸信息以及從服務(wù)器獲取的隨機(jī)碼一并進(jìn)行封裝;
在本步驟中,用戶在登陸界面輸入用戶名后,前端向服務(wù)器發(fā)送獲取隨機(jī)碼的請(qǐng)求,服務(wù)器生成一個(gè)隨機(jī)碼發(fā)送給web前端,web前端對(duì)用戶名、密碼連同隨機(jī)碼一并封裝;
3、web前端對(duì)封裝后的數(shù)據(jù)采用rsa公鑰進(jìn)行統(tǒng)一加密;
本步驟中,采用rsa非對(duì)稱加解密技術(shù),在web前端利用rsa公鑰對(duì)步驟2封裝后的數(shù)據(jù)進(jìn)行統(tǒng)一加密。
4、web前端對(duì)加密后的數(shù)據(jù)運(yùn)用定義的http規(guī)則發(fā)送給服務(wù)器;
本步驟中,web前端運(yùn)用新定義的http規(guī)則將加密后的數(shù)據(jù)發(fā)送給服務(wù)器;
5、服務(wù)器對(duì)請(qǐng)求規(guī)則進(jìn)行驗(yàn)證,驗(yàn)證通過(guò)后利用rsa私鑰解密數(shù)據(jù)獲得用戶登陸信息及隨機(jī)碼;
本步驟中,服務(wù)器首先對(duì)請(qǐng)求規(guī)則進(jìn)行驗(yàn)證,在驗(yàn)證通過(guò)后才解密數(shù)據(jù)信息,這樣即使單一的用戶信息泄露,因無(wú)法同時(shí)得到請(qǐng)求規(guī)則,從而驗(yàn)證不會(huì)通過(guò),以此保證系統(tǒng)安全;
在解密數(shù)據(jù)信息時(shí),采用與步驟3中對(duì)應(yīng)的rsa私鑰進(jìn)行解密,獲取用戶登陸信息及隨機(jī)碼。
6、服務(wù)器對(duì)用戶登陸信息進(jìn)行驗(yàn)證匹配,對(duì)隨機(jī)碼進(jìn)行驗(yàn)證匹配,均通過(guò)后對(duì)用戶登陸授權(quán);
本步驟中,服務(wù)器在獲取用戶登陸信息及隨機(jī)碼后,分別利用存儲(chǔ)的用戶信息和隨機(jī)碼信息對(duì)其進(jìn)行匹配驗(yàn)證,只有驗(yàn)證均通過(guò)后對(duì)用戶登陸進(jìn)行授權(quán)。
7、web前端在登陸后的訪問(wèn)操作中,通過(guò)判別請(qǐng)求與獲取響應(yīng)的時(shí)間差是否在允許范圍內(nèi)來(lái)保證訪問(wèn)安全性。
本步驟中,在web前端在登陸后的后續(xù)訪問(wèn)操作中,通過(guò)判別請(qǐng)求與獲取響應(yīng)的時(shí)間差是否在允許范圍內(nèi),一旦檢測(cè)到訪問(wèn)頻繁超時(shí),將返回超時(shí)提醒以及存在一定的危險(xiǎn)性。