Posted by: poetrabangsa | May 6, 2008

Membuat captcha

CAPTCHA (kepanjangan: Completely Automated Public Turing test to tell Computers and Humans Apart) adalah gambar yang mengandung kode alfabetik, numerik, ataupun alfanumerik, yang pada umumnya mudah dibaca oleh manusia namun susah (bahkan tidak bisa) dibaca oleh komputer. CAPTCHA bisa dibuat dengan menggunakan skrip PHP dan ekstensi GD yang berfungsi untuk membangkitkan grafik. Tulisan ini akan mengulas tentang cara membuat CAPTCHA sederhana. Anda cukup menyediakan web server Apache dengan modul PHP 5 dan ekstensi GD versi 2.0.34.

Berikut ini adalah langkah-langkah untuk membuat CAPTCHA:

  1. Buatlah session untuk menyimpan hasil pengacakan string.
  2. Definisikan gambar yang akan dibuat (tentukan ukuran, dan warna yang akan memenuhi gambar tersebut).
  3. Persiapkan string yang akan diacak.
  4. Tambahkan komponen-komponen yang akan memperkuat pengamanan CAPTCHA: font yang unik, penambahan background, penambahan garis-garis, rotasi teks, pembuatan font dengan ukuran masing-masing karakter yang berbeda, dsb.
  5. Bangkitkan CAPTCHA dengan menghidupkan session, dan memanggil fungsi pembangkit gambar yang ada pada ekstensi GD.

Dan inilah contoh source code-nya (Anda diperbolehkan untuk mengutip, mengedit, memodifikasi, dan menyebarkannya):

<?php
/**
*	@filename	image.php
*	@author		Aprian Diaz Novandi
*	@brief		Skrip PHP yang menghasilkan
gambar berformat .PNG dari string hasil pengacakan
huruf kapital dengan font jenis AnkeCalligraph.TTF
*	@version	1.0.0.0
*	@date		May 15th 2007
*/

/*memulai session untuk menyimpan hasil pengacakan
string*/
session_start();

//membuat gambar berukuran 150x30 piksel
$im = imagecreatetruecolor(150, 40);

//definisi warna
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 175, 175, 175);
$black = imagecolorallocate($im, 0, 0, 0);

/*membuat kotak berwarna putih dari titik (0,0) s.d.
(150,40)*/
imagefilledrectangle($im, 0, 0, 150, 40, $white);

//string teks yang akan diacak
$str =
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';

/*mengambil enam karakter saja dari hasil pengacakan
string*/
$text = substr(str_shuffle($str),0,6);

//font yang dipilih
$font = 'AnkeCalligraph.TTF';

/*parameter fungsi imagettftext
(gambar_sumber,ukuran_font,sudut,x,y,
warna,jenis_font,text_yang_akan_ditulis)*/

//menambahkan bayangan
imagettftext($im, 22, 0, 11, 26, $grey, $font, $text);

//menambahkan teks
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);	

//menghidupkan session
$_SESSION['randstr'] = sha1($text);

header(”Content-type: image/png”);
imagepng($im);
imagedestroy($im);
?>

Skrip di atas masih memiliki kelemahan, yaitu masih bisa diinterpretasi oleh aplikasi yang memanfaatkan aspek kecerdasan buatan (computer vision). CAPTCHA yang baik adalah CAPTCHA yang susah diinterpretasi oleh aplikasi semacam itu. Saat ini, semakin banyak aplikasi yang dikembangkan untuk mematahkan pengamanan halaman web dengan CAPTCHA, dan biasanya akan dipakai oleh mesin penyebar spam.

Untuk melihat contoh aplikasi yang memanfaatkan CAPTCHA, Anda bisa menuju link: http://arc.itb.ac.id/~diaz/captcha

Tips di bawah ini barangkali berguna untuk Anda yang tertarik untuk bermain-main dengan CAPTCHA:

  1. Hindari pembuatan CAPTCHA tanpa latar belakang karena akan semakin memudahkan aplikasi pembaca kode CAPTCHA. Paling tidak buatlah tambahan garis-garis atau buatlah dengan pilihan font yang unik tapi masih terbaca manusia
  2. Modifikasilah karakter-karakter CAPTCHA yang dibuat dengan merotasi karakter dan/atau mengatur ukuran karakter tersebut agar berbeda.


Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Categories

Follow

Get every new post delivered to your Inbox.