趙瑞華
摘要
Web應(yīng)用的安全至今仍是信息安全領(lǐng)域中的一個重點(diǎn),在實(shí)現(xiàn)其安全時,身份認(rèn)證被認(rèn)為是保證其安全的第一道關(guān)卡。用戶注冊、登錄是身份認(rèn)證最重要的兩個環(huán)節(jié),也是攻擊者的攻擊方向,本文總結(jié)了Web應(yīng)用中常用的一些防范惡意注冊、登錄的方法。
【關(guān)鍵詞】身份認(rèn)證 防范惡意注冊 防范惡意登錄
Web應(yīng)用的安全至今仍是信息安全領(lǐng)域中的一個重點(diǎn),要想實(shí)現(xiàn)Web應(yīng)用的安全需要采取很多措施,譬如身份認(rèn)證、對用戶訪問進(jìn)行控制、防范SQL注入等等。在實(shí)現(xiàn)Web應(yīng)用安全時,身份認(rèn)證被認(rèn)為是保證其安全的第一道關(guān)卡,確認(rèn)好用戶的身份才能進(jìn)一步依據(jù)用戶身份確定對Web資源的訪問和使用權(quán)限。
用戶注冊、登錄是身份認(rèn)證最重要的兩個環(huán)節(jié),也是攻擊者的攻擊方向。注冊環(huán)節(jié)攻擊者可能會惡意注冊消耗系統(tǒng)資源,需要采取一定的措施進(jìn)行防范。登錄環(huán)節(jié)只要求用戶輸入用戶名和強(qiáng)密碼依然是不夠的。因?yàn)槿绻徊扇∠鄳?yīng)保護(hù)措施的話,攻擊者可能會使用不斷試探不同用戶名、密碼對的方式即暴力破解的方式試探出正確的用戶名和密碼。如果試探出的是Web網(wǎng)站管理員或其它權(quán)限較高用戶的口令對網(wǎng)站來說將會是一場災(zāi)難!那么,應(yīng)該如何防范攻擊者惡意注冊、登錄呢?下面介紹幾種比較常用的防范方法。
1 限制登錄嘗試次數(shù)防范暴力破解
暴力破解口令的過程其實(shí)就是一個不斷試探的過程,在試探的過程中攻擊者會嘗試多個用戶可能會使用的用戶名、密碼對,譬如很多網(wǎng)站默認(rèn)的管理員帳戶admin/admin、root/root等。通常情況下,攻擊者在進(jìn)行試探時一個用戶名會連續(xù)組合若干個密碼,所以可以考慮限制同一個帳戶在指定時間內(nèi),如I天或是I小時之內(nèi),進(jìn)行登錄嘗試的次數(shù)。此外,也可以考慮限制同一IP在指定時間內(nèi)進(jìn)行登錄的頻度。要想實(shí)現(xiàn)這些限制,可以考慮使用cookie或是session,但使用cookie時需要注意cookie保留在客戶端,攻擊者可能會及時清理cookie。
2 使用驗(yàn)證碼圖片
驗(yàn)證碼是目前多數(shù)網(wǎng)站支持的一種防范惡意注冊、登錄的方法。驗(yàn)證碼可以是數(shù)字、字母或是數(shù)字與字母的組合(如圖1),它由服務(wù)端生成,并且每次都不同。驗(yàn)證碼以圖片形式呈現(xiàn)給客戶端,客戶端收到后提交所顯示的驗(yàn)證碼;服務(wù)端接收后進(jìn)行驗(yàn)證,如果驗(yàn)證成功,跳轉(zhuǎn)到相應(yīng)界面,不成功則不能進(jìn)行注冊或登錄。目前,驗(yàn)證碼圖片幾乎是防惡意注冊的標(biāo)配。
當(dāng)然,面對驗(yàn)證碼攻擊者并不是無可作為,他們可能會對驗(yàn)證碼進(jìn)行識別。一般通過預(yù)處理、字符分割、字符標(biāo)記分類、字符識別等流程來識別驗(yàn)證碼,這其中字符分割最為關(guān)鍵,字符難以分割才能增加驗(yàn)證碼識別的難度,所以在生成驗(yàn)證碼圖片時應(yīng)當(dāng)加入一些干擾因素,如增加噪點(diǎn)(如圖1中a圖所示)、提高字符的粘連程度(如圖1中b圖所示)等,使得字符難以分割。實(shí)際應(yīng)用中,由于安全性較差純數(shù)字的驗(yàn)證碼已經(jīng)較少使用。
3 其它防范方法
3.1 挑選或旋轉(zhuǎn)圖片
當(dāng)用戶注冊或登錄時,服務(wù)器向客戶端展示一些圖片,讓用戶從中選擇符合指定條件的圖片,譬如選擇家電圖片、動物圖片等;或是讓用戶旋轉(zhuǎn)其中未正置的圖片使其正置。當(dāng)當(dāng)網(wǎng)在用戶登錄界面就采用了旋轉(zhuǎn)圖片的方法來防范暴力破解。
3.2 拖動進(jìn)度條
當(dāng)用戶注冊或登錄時,服務(wù)器向客戶端展示一個進(jìn)度條,讓用戶拖動滑塊完成進(jìn)度條,從而防范自動注冊或暴力破解。天貓商城就在用戶注冊界面采用了這種方法防范惡意注冊,見圖2。
3.3 完成拼圖
完成拼圖這種方式可以看成是拖動進(jìn)度條的升級版,與拖動進(jìn)度條不同的是完成拼圖需要用戶拖動滑塊使得滑塊上方的圖片移動到合適的位置完成拼圖。京東商城注冊界面(見圖3)、51cto網(wǎng)站登錄界面都使用了這種防范惡意攻擊的方法。
3.4 手機(jī)驗(yàn)證碼
有些網(wǎng)站可以使用手機(jī)號進(jìn)行注冊,為了防范使用空號或是他人的手機(jī)號進(jìn)行注冊,進(jìn)行注冊時網(wǎng)站會發(fā)送一個手機(jī)驗(yàn)證碼到用戶輸入的手機(jī)號中。用戶輸入收到的手機(jī)驗(yàn)證碼方可完成注冊。
當(dāng)用手機(jī)號進(jìn)行登錄時也會發(fā)送一個手機(jī)驗(yàn)證碼到用戶手機(jī)。用戶輸入正確的手機(jī)驗(yàn)證碼才可完成登錄。
4 結(jié)語
總結(jié)一下本文介紹的方法會發(fā)現(xiàn)除限制登錄嘗試次數(shù)外其它方法都盡力做到機(jī)器或是軟件難以實(shí)現(xiàn)自動輸入,從而降低惡意注冊或登錄的風(fēng)險。
此外,在實(shí)際應(yīng)用中出于安全考慮或是等級保護(hù)的合規(guī)要求(具體請參考《網(wǎng)絡(luò)安全等級保護(hù)基本要求第1部分:安全通用要求》“應(yīng)用和數(shù)據(jù)安全”部分對等級保護(hù)定級為三級及以上的信息系統(tǒng)的“身份鑒別”要求),網(wǎng)站可能要同時采用兩種或兩種以上的方法來進(jìn)行惡意注冊、登錄的防范。
最后,本文介紹的方法也適用于其它需要防范攻擊者使用機(jī)器或軟件進(jìn)行自動嘗試的地方,譬如為了防范惡意刷票就可以記錄客戶端IP的登錄頻度,為了防范攻擊者惡意發(fā)帖就可以采用驗(yàn)證碼等方法。
參考文獻(xiàn)
[1]圖片驗(yàn)證碼識別[EB/OL].https://blog.esdn.net/portfloat/article/details/79007105.