Tarpit: Pengenalan serta Cara Implementasi pada Yii
February 7th, 2012, Written by: | Categories: Programming, Yii Framework

Istilah tarpit sendiri berasal dari bahasa Inggris “tar pit” yakni lumpur aspal. Karena sifat alamiahnya yang lengket, siapapun yang terjatuh ke kubangan lumpur akan sulit bergerak. Itu sebabnya banyak ditemukan fosil makhluk hidup di dalam lumpur ini gara-gara binatang yang terjebak dalamnya tidak bisa keluar.

La Brea Tar Pit

Mammoth yang terjebak di tar pit

Konsep tarpit dalam dunia pemograman juga mirip dengan tar pit di dunia nyata. Yakni menjebak bot untuk berdiam di sana sampai waktu tertentu. Ketika sebuah bot sudah masuk ke dalam tarpit maka mereka akan tidak bisa keluar sampai delay tersebut selesai. Dan itu artinya memperlambat gerak gerik mereka. Tarpit sangat efektif untuk melambatkan gerak bot tanpa menguras daya prosesor server.

Untuk membuat tarpit, secara sederhana, pertama-tama kita membuat sebuah file (bisa PHP, ASPX atau bahkan CGI) yang jika diakses di dalamnya hanya ada fungsi sleep() atau fungsi penunda untuk men-delay pengakses, misalnya sekitar 10-20 detik. Kita namakan file-nya “tarpit.php”.

Kemudian kita membuat sebuah file .htaccess. File .htaccess dapat digunakan untuk men-redirect orang ataupun bot ketika mengakses URL-URL tertentu. Misalnya kita tidak ingin ada orang mengakses URL yang mengandung kata “phpmyadmin”. Jadi di dalam .htaccess kita tulis seperti demikian:
RewriteRule ^.*phpMyAdmin.*$ /var/www/tarpit.php [NC,L]

Sekarang kalau ada bot atau orang kurang kerjaan mengakses url yang mengandung kata “phpmyadmin” akan selamat menunggu ria. Ketika bot mencoba buka URL mengandung kata “phpmyadmin” dan mendapati bahwa bukan respon 404 alias page not found, mungkin saja bot akan terus mencoba mengaksesnya.

Bagaimana dengan Yii Framework sendiri? Yii sendiri sebenarnya tidak memiliki fungsi tarpit built-in. Tetapi kita bisa memanfaatkan fungsi tarpit yang dibuat orang lain dengan mengimplementasi ke Yii dalam beberapa langkah sederhana.

Pertama-tama kita harus men-donwload php-labrea, sebuah skrip tarpit yang cukup populer. Setelah download, ekstrak file tersebut, taruh di bagian terdepan pada root document (biasanya berada di dalam folder www atau public_html). Kemudian kita harus menambah beberapa baris code di layout utama Web. Pertama kita buka /protected/views/layout/main.php kita tambahkan baris ini pada bagian dalam body atas:

<?php $pitdir = "http://" . $_SERVER['HTTP_HOST'] . "/php-labrea/"; ?>
<a href="<?php echo $pitdir; ?>"><img src="images/pixel.gif" border="0"
alt=" " width="1" height="1" style="display:none;"></a>

Kode di atas merupakan link jebakan yang kasat mata manusia. Hanya mungkin bot yang mengaksesnya.

Berikutnya kita lanjutkan untuk mengubah file bootstrap aplikasi Web kita, dengan membuka file index.php terdepan.

include($_SERVER['DOCUMENT_ROOT'] . "/php-labrea/classes/tarpit.php");
$tarpit=new tarpit;

if($tarpit->isBot()){
$location="http://" . $_SERVER['HTTP_HOST'] ."/php-labrea";
header('location:'.$location);
exit;
}

// change the following paths if necessary
$yii=dirname(__FILE__).'/../framework/yii.php';
$config=dirname(__FILE__).'/protected/config/main.php';
...

Code di atas bertugas mengecek apakah bot yang mengakses Web kita adalah bot baik atau bot jahat. Jika ternyata adalah bot jahat, maka akan langsung diarahkan ke php-labrea yang tampilannya akan seperti ini:

halaman php-labrea

Greetings from the Underworld

Jika ingin melihat bagaimana cara mengimplementasi php-labrea dari Web sang pembuat silahkan mengunjungi wiki php-labrea. Kalau misalnya dalam penggunaannya muncul pesan-pesan warning, jangan lupa untuk setting error reporting menjadi E_ERROR. Semoga membantu…

More about: , ,

Leave a Reply