我們?yōu)g覽網(wǎng)站經(jīng)常會(huì)用到一些驗(yàn)證碼,主要目的是防止來(lái)自暴力破解或密碼窮舉等方面的攻擊,但有時(shí)候驗(yàn)證碼的出現(xiàn)也會(huì)影響用戶的瀏覽體驗(yàn),解決方案之一就是設(shè)置一個(gè)拋錯(cuò)閥值,當(dāng)有惡意用戶在嘗試暴力破解或窮舉的時(shí)候輸錯(cuò)次數(shù)超過(guò)閥值,便觸發(fā)驗(yàn)證碼框的彈出,這樣既可以阻止攻擊者的惡意行為又可以提高合法用戶的瀏覽體驗(yàn)。那么trouble來(lái)了,我通過(guò)什么信息去標(biāo)識(shí)一個(gè)用戶呢?
一? 對(duì)于已注冊(cè)過(guò)的用戶
已經(jīng)注冊(cè)過(guò)的用戶肯定有自己的用戶ID,而且這個(gè)ID是不會(huì)變的,那么就可以利用這個(gè)ID做全局變量,然后設(shè)置count計(jì)數(shù),當(dāng)超過(guò)輸錯(cuò)上限的閥值(比如3次或6次)的時(shí)候,驗(yàn)證碼彈出。
二? 對(duì)于未注冊(cè)過(guò)的用戶
方法1. 未注冊(cè)過(guò)的用戶通常沒(méi)有用戶ID,這個(gè)時(shí)候可以獲取用戶IP地址并綁定該用戶,然后設(shè)置閥值并計(jì)數(shù),超過(guò)上限便彈驗(yàn)證碼框。
方法2. 定義一個(gè)全局變量,運(yùn)行幾次加幾次,當(dāng)超過(guò)閥值的時(shí)候觸發(fā)驗(yàn)證碼彈框即可。
(以上解決方案僅供參考,如有不妥請(qǐng)盡管拍磚指正。)