cookie 實現驗證碼的原理

2021-08-26 13:50:24 字數 1284 閱讀 8030

驗證碼技術用來解決網路中的惡意註冊或者 ddos 攻擊,主要原理是,讓使用者

輸入中的文字,如果通過了驗證,伺服器就在客戶端瀏覽器儲存乙個驗證 cookie,

比如叫做 9hcxogjmhn5j7upmguya4abd>

以後使用者訪問伺服器其他頁面的時候,伺服器先獲取這個 cookie, 如果存在,

說明驗證通過,

不存在則讓使用者輸入驗證碼。

事先製作驗證碼

伺服器生成 n 張驗證碼,檔名就是驗證碼對應的字串。比如 nbxy.jpg

伺服器使用乙個 map,用來儲存 的序對,其中 index 從

1遞增直到 n, code 是驗證碼字串,也是的檔名。

<1, nbxy>

<2, abed>

<3, iolx>

伺服器生成隨機的驗證碼給使用者

瀏覽器請求乙個頁面,伺服器先檢查瀏覽器是否有 secure_session 的 cookie,

如果沒有,就讓使用者輸入驗證碼,伺服器就使用雜湊的方法取一張驗證碼,

顯示在瀏覽器,雜湊方法的具體步驟是:

伺服器根據訪問時間和 ip 生成乙個 md5,作為 key

key = md5(time, ip)

然後計算 key 的 hash值,對其取餘,得到驗證碼的索引值

index = hash(key) % n

從伺服器的 map 中查詢索引值 index 對應的驗證碼,返回給瀏覽器

可見,key 可以確定一張驗證碼,後面乙個步驟,需要把使用者輸入的驗證碼和

驗證碼對比,以判斷使用者輸入是否正確,為了確定使用者使用的是哪張,我們

把 key 值儲存在瀏覽器,即把 作為臨時 cookie 儲存在

瀏覽器上。

伺服器如何驗證

驗證的時候,伺服器從客戶取得兩個屬性,乙個是 key 值,可以通過 temp_session

取得,乙個是使用者輸入的驗證碼。

key = get_cookie("temp_session")

code = request.getparameter("code")

根據 key 計算出索引值

index = hash(key) % n

從伺服器的 map 中查詢 index 對應的驗證碼,

然後拿這個驗證碼跟使用者輸入的驗證碼做比較,即可驗證

是否合法。

如果合法就把正式的 cookie 儲存在瀏覽器

驗證碼的cookie實現

jq的ajax十分方便,最近做兩個 功能都用到了 驗證碼字串的獲取與使用者名稱檢驗。一 驗證碼字串的獲取 我一開始的思路是伺服器生成驗證碼並存放在session中,客戶端利用ajax非同步獲取,並且校驗。問題來了,由於ajax非同步獲取期間,js的 已經繼續執行,往往無法獲取最新的驗證碼字串,解決辦...

驗證碼實現

1.gd庫 2.建立影象步驟 1 建立畫布 就是在記憶體中開闢一塊臨時區域,用於儲存圖影象資訊 2 繪製影象 使用各種函式設定影象顏色,背景,填充畫筆,繪製圖形等 3 輸出圖形 以某種格式儲存到伺服器或者輸出到瀏覽器顯示給使用者。注意 直接輸出之前一定要用header 告訴瀏覽器以影象格式來處理該輸...

驗證碼的原理 作用及實現

最近學習實現了驗證碼,首先附圖效果如下 簡單說明 分別提交正確 錯誤的驗證碼及對應效果 本文是 結合說明 這就可以排除,用其他病毒或者軟體自動申請使用者及自動登陸.有效防止這種問題。1.原理 驗證碼於伺服器端生成,傳送給客戶端,並以影象格式顯示。客戶端提交所顯示的驗證碼,客戶端接收 並進行比較,若比...