關於驗證碼儲存機制的轉變

2021-08-13 13:59:05 字數 1518 閱讀 3236

在平常的**中,驗證碼用於識別是否是機器訪問或是人工,防止機器大規模訪問註冊或暴力破解密碼

在一般情況下,驗證碼的值儲存都是以session來儲存的,或者儲存於資料庫,redis快取等等,但是這些都避免不了乙個問題:都是伺服器儲存的

當在高併發場景下,session,檔案儲存都會導致php大量的讀寫檔案,導致磁碟負載過高,或者redis快取導致額外消耗記憶體效能,資料庫效能等等問題

那該怎麼設計乙個不會影響伺服器效能的驗證碼儲存機制呢?

下面是乙個例項:

1

2

3

4

5

$code='abcd';

$salt= mt_rand(1,10000);

$cookie1= md5($code.$salt);

$cookie2=$salt;

當有驗證碼時,伺服器隨機生成乙個salt,用於md5加密,再然後將md5加密後的值,與salt儲存到使用者的cookie當中

當使用者提交自己寫的驗證碼時,同時提交cookie1,和cookie2兩個值,伺服器根據使用者輸入的驗證碼,進行和salt一起md5加密比對cookie1

下面是驗證例項:

1

2

3

4

5

6

7

8

9

<?php

$code=$_post['code'];

$cookie1=$_post['cookie1'];

$cookie2=$_post['cookie2'];

if(md5($code.$cookie2)==$cookie1)

這樣的話,服務端將不需要額外的儲存來消耗資源,且能保證驗證碼的驗證正常

.

驗證碼機制

驗證碼是從後端生成的,隨機生成的 後端永遠都認為前端有可能造假 1,後端呼叫相關的繪圖第三方類庫,或者是系統核心繪圖類庫進行蹄片的繪製 2 繪製的那些隨機的數字,字母,都是後端預先定義好的 3 繪製的的url位址,通過網路反送給客戶端,然後,客戶端可以使用img標籤,去引用這個 驗證碼的位址 4 後...

關於滑動驗證碼

首先前台呼叫後台介面,獲取y座標,及裁剪的小圖,混淆拼接的。x座標儲存到資料庫。返回驗證碼json jobject y positiony y座標 jobject array string.join array jobject imgx imgwidth 寬 jobject imgy imgheig...

驗證碼機制與實現

時下圖形驗證碼的應用已經非常廣泛了,無論是在web應用還是客戶端軟體中。主要是用來防止字典攻擊 或稱暴力猜解 機器註冊等 本篇文章主要講解驗證碼實現機制與安全策略突破 1.客戶端發起乙個請求 2.服務端響應並建立乙個新的sessionid同時生成乙個隨機驗證碼 3.服務端將驗證碼和sessionid...