時下圖形驗證碼的應用已經非常廣泛了,無論是在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
會生成image以及session值<?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);
?>
這裡就不詳細闡述了
可以參考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 驗證內容的校驗 下面看 實現的過程 這段 實現了產生 隨機數字,隨機...