趙瑞華



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