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:
- Buatlah session untuk menyimpan hasil pengacakan string.
- Definisikan gambar yang akan dibuat (tentukan ukuran, dan warna yang akan memenuhi gambar tersebut).
- Persiapkan string yang akan diacak.
- 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.
- 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:
- 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
- Modifikasilah karakter-karakter CAPTCHA yang dibuat dengan merotasi karakter dan/atau mengatur ukuran karakter tersebut agar berbeda.


Recent Comments