驗證碼技術用來解決網路中的惡意註冊或者 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.原理 驗證碼於伺服器端生成,傳送給客戶端,並以影象格式顯示。客戶端提交所顯示的驗證碼,客戶端接收 並進行比較,若比...