驗證碼機制與實現

2021-08-02 16:44:56 字數 1947 閱讀 5904

時下圖形驗證碼的應用已經非常廣泛了,無論是在web應用還是客戶端軟體中。主要是用來防止字典攻擊(或稱暴力猜解)、機器註冊等

本篇文章主要講解驗證碼實現機制與安全策略突破

1.客戶端發起乙個請求;

2.服務端響應並建立乙個新的sessionid同時生成乙個隨機驗證碼;

3.服務端將驗證碼和sessionid一併返回給客戶端;

4.客戶端提交驗證碼連同sessionid給服務端;

5.服務端驗證驗證碼同時銷毀當前session中的驗證碼,返回給客戶端結果。

這裡用了網上的乙個例子

無標題文件title>

head>

check.php

<?php 

header("content-type:text/html;charset=utf-8"); //設定頭部資訊

//isset()檢測變數是否設定

if(isset($_request['authcode']))else

exit();

}?>

image.php

<?php 

//11>設定session,必須處於指令碼最頂部

session_start();

$image = imagecreatetruecolor(100, 30); //1>設定驗證碼大小的函式

//5>設定驗證碼顏色 imagecolorallocate(int im, int red, int green, int blue);

$bgcolor = imagecolorallocate($image,255,255,255); //#ffffff

//6>區域填充 int imagefill(int im, int x, int y, int col) (x,y) 所在的區域著色,col 表示欲塗上的顏色

imagefill($image, 0, 0, $bgcolor);

//10>設定變數

$captcha_code = "";

//7>生成隨機的字母和數字

for($i=0;$i

<4;$i++)

//10>存到session

$_session['authcode'] = $captcha_code;

//8>增加干擾元素,設定雪花點

for($i=0;$i

<200;$i++)

//9>增加干擾元素,設定橫線

for($i=0;$i

<4;$i++)

//2>設定頭部,image/png

header('content-type: image/png');

//3>imagepng() 建立png圖形函式

imagepng($image);

//4>imagedestroy() 結束圖形函式 銷毀$image

//imagedestroy($image);

?>

會生成image以及session值

這裡就不詳細闡述了

可以參考freebuf上的一篇文章

驗證碼機制

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

驗證碼實現

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

php驗證碼zhuc php實現驗證碼製作

php實現驗證碼製作 首先,看一張圖了解驗證碼生成的過程。1 生成驗證碼底圖 2 驗證碼內容 3 生成驗證碼 4 對比校驗 驗證碼實現的核心技術分析 a 底圖的 實現,並新增干擾元素 b 生成驗證內容 c 驗證內容儲存在服務端 d 驗證內容的校驗 下面看 實現的過程 這段 實現了產生 隨機數字,隨機...