Головна »»» Web »»» PHP

Проста captcha на php за 5хв

CAPTCHA - completely automated public turing test to tell computers and humans apart (повністю автоматизований публічнийтест Тюринга для розрізнення комп'ютерів і людей).

Яким чином працює капча:

1. Генерується (бажано випадковим чином) певний набір символів;

2. Згенерований набір символів записується в певне сховище даних (БД, сесія і тд)

в куки бажано не зберігати, оскільки з них легко отримати це значення

3. Генерується зображення на якому відображається згенерована послідовність символів з використанням різних шумів та спотворень зображення для ускладнення процесу зламу (розпізнавання капчі).

4.Перевіряється введена користувачем послідовність із збереженою, якщо вони співпадають - це людина, якщо ні то це бот, або людина зробила помилку при вводі символів з зображення.

Варіант капчі:


/**
Проста капча написана за 5хв 
by DR http://drsoft.com.ua/
*/
@session_start();
$_SESSION['dr_simple_capcha'] = mt_rand(10, 50) . mt_rand(10, 50);
$img = @imagecreatetruecolor (60, 60); 
$white = imagecolorallocate($img, 255, 255, 255); 
imagefill($img, 0, 0, $white); 
$angle = mt_rand(10,15);
for ($i = 0; $i < 12; $i++) 
{
	imagettftext ($img, 16, $angle + mt_rand(0,5), 2, 35, imagecolorallocate ($img, mt_rand(100,255), mt_rand(0,80), mt_rand(0,80)), "./arial.ttf", $_SESSION['dr_simple_capcha']);
}
header("Cache-Control: no-store");
header("Expires: " . date("r"));
header("Content-Type: image/png");
imagepng ($img);
imagedestroy($img);
?>

Така капча не є стійкою до зламу, оскільки генерація вхідної послідовності символів не є випадковою + до того для генерації використовуються лише цифри, що в свою чергу зменшує кількість можливих комбінація для брутфорсу. Також у прикладі використовується примітивне спотворення яке полягає у виводі тексту декілька раз під рандомним кутом.

 

 
13.10.2013
2081 переглядів