shift

CAPTCHA چیست؟ چگونه کار می کند؟ + نمونه کد PHP

CAPTCHA چیست؟ چگونه کار می کند؟ + نمونه کد PHP

ایمان
دسته: ابزارها  تگ ها: captcha چیست , captcha چگونه کار می کند , آموزش ساخت captcha با php , نمونه کد php ساخت captcha

 

قصد داریم یاد بگیریم CAPTCHA (مخفف Completely Automated Public Turing test to tell Computers and Humans Apart) چگونه کار می کند و چگونه عضویت ها و ثبت شدن اتوماتیک فرم ها بوسیله ی ربات ها را به حداقل می رساند. سپس به ایجاد یک اسکریپت CAPTCHA ساده به زبان PHP می پردازیم تا نحوه کار را بهتر نشان دهیم.

در واقع CAPTCHA بصورت زیر کار می کند:

  1. ایجاد مقدار تصادفی: یک مقدار تصادفی مانند یک عدد و یا یک رشته تصادفی از حروف تولید می شود. مقادیر تصادفی اغلب قابل حدس زدن و یا پیش بینی نیستند.
  2. تولید یک تصویر: تصاویر معمولا بصورتی طراحی می شوند که خواندن آن برای ربات ها سخت ولی برای انسان آسان است. این مهم ترین گام در ایجاد CAPTCHA می باشد. چون اگر از یک عکس با متن ساده استفاده شود، براحتی قابل هک شدن می باشد. توسعه دهندگان از تکنیکهای مختلف برای بکار بردن متن در تصویر استفاده می کنند، بطوری که خواندن آن برای کامپیوترها سخت باشد. بعضی از آن ها خطوطی بصورت ZIG-ZAG در پس زمینه ایجاد می کنند در حالی که برخی دیگر به متن پیچ و تاب می دهند. همیشه روش های جدیدی برای بوجود آوردن CAPTCHA های بهتر ایجاد می شود، چراکه هکرها هیچ گاه بیکار نمی نشینند و روش های جدیدی برای نفوذ به سیستم ها می یابند. از روش های نوین جایگزین CAPTCHA می توان SMS Verification و Phone Verification را نام برد.
  3. ذخیره آن: رشته تصادفی تولید شده (که در تصویر هم وجود دارد) برای تطبیق مقدار ورودی کاربر در محلی ذخیره می شود. ساده ترین راه برای انجام این کار استفاده از متغیرهای Session است.
  4. تطبیق: پس از مرحله فوق، مرحله تطبیق تصویر  CAPTCHA تولید شده با مقدار ذخیره شده (مثلا در Session) می باشد.

 

تصویر زیر توضیحات بالا را کامل تر نشان می دهد:

کد PHP زیر، نمونه کد برای ایجاد CAPTCHA است که عملیات ایجاد عکس و قرار دادن آن در Session را انجام می دهد.

/********************************************************
* File: captcha.php *
* Author: civien (http://www.shift.ir) *
* Description: This file can be embedded as image *
* to show CAPTCHA/ *
********************************************************
/// The number of characters you
// want your CAPTCHA text to have
define('CAPTCHA_STRENGTH', 5);</div>
/****************************
* INITIALISE *
****************************/
// Tell PHP we're going to use
// Session vars
session_start();

// Md5 to generate the random string
$random_str = md5(microtime());

// Trim required number of characters
$captcha_str = substr($random_str, 0, CAPTCHA_STRENGTH);

// Allocate new image
$width = (CAPTCHA_STRENGTH * 10)+10;
$height = 20;

$captcha_img =ImageCreate($width, $height);

// ALLOCATE COLORS
// Background color-black
$back_color = ImageColorAllocate($captcha_img, 0, 0, 0);

// Text color-white
$text_color = ImageColorAllocate($captcha_img, 255, 255, 255);

// Line color-red
$line_color = ImageColorAllocate($captcha_img, 255, 0, 0);

/****************************
* DRAW BACKGROUND *
* LINES *
****************************/
// Fill background color
ImageFill($captcha_img, 0, 0, $back_color);

// Draw lines accross the x-axis
for($i = 0; $i < $width; $i += 5)
ImageLine($captcha_img, $i, 0, $i, 20, $line_color);

// Draw lines accross the y-axis
for($i = 0; $i < 20; $i += 5)
ImageLine($captcha_img, 0, $i, $width, $i , $line_color);

/****************************
* DRAW AND OUTPUT *
* IMAGE *
****************************/
// Draw the random string
ImageString($captcha_img, 5, 5, 2, $captcha_str, $text_color);

// Carry the data (KEY) through session
$_SESSION['key'] = $captcha_str;

// Send data type
header("Content-type: image/jpeg");

// Output image to browser
ImageJPEG($captcha_img);

// Free-Up resources
ImageDestroy($captcha_img);

// read $_SESSION['key'] on second side.

نظر خود را بنویسید...
ارسال نظر
لغو