Thursday, October 25, 2007

Bagaimana XSS bug terjadi?

Salah satu bug/ kelemahan pada website adalah XSS, bug ini memang sudah agak lama? Tapi masih saja ada web yang memilikinya. Bug XSS adalah suatu kelemahan yang terdapat pada website yang tidak dilengkapi dengan filter. untuk lebih jelasnya perhatikan contoh link dibawah ini:

http://xxx.com/?option=com_content=&id=60&ktg=xss_bug

coba perhatikan karakter setelah tanda tanya “?” pada link diatas, berikut penjelasannya:

  • option=com_content

    Option, adalah variabel yang isinya adalah com_content

  • & (maksudnya dan )

  • id=60

    Id, variabel yang isinya adalah 60

  • ktg=xss_bug

    ktg, variabel yang isinya adalah xss_bug

Karakter setelah tanda tanya “?” dan sebelah kirinya samadengan “=” adalah nama variabel.( saya anggap anda sudah mengerti tentang variabel). Variabel ini bertugas menyampaikan keinginan (permintaan) user(pengunjung website) kepada Program (website tersebut).

Variabel yang digunakan umumnya ada 2 macam:

Variabel Dalam Program

variabel yang berkerja dari dalam program (tidak muncul kepermukaan)


  • Variabel Luar Program

    variabel yang berkerja di luar program (tapi masih berhubungan dengan dalam program)

variabel yang digunakan kali ini bisa dikategorikan variabel luar. Contohnya seperti variabel diatas tadi (option, id dan ktg).

variabel ktg menyimpan nilai xss_bug, variabel ini akan dikirim ke program karena akan diproses untuk memberikan permintaan user. (saya harap anda paham dengan keterangan ini, bila masih bingung coba perhatikan listing di bawah ini!).





<html>
<head>
<title> Contoh Bug XSS </title>
</head>
<body>
<form name="form1" action="" method="post">
<input type="text" name="q">
<input type="submit" name="kirim" value="kirim" >
</form>
<?php
if ($kirim)
{
echo $q;
}
?>
</body>
</html>

simpan script diatas dengan nama form.php kemudian jalankan pada browser yang sudah terpasang server php kemudian coba anda ketikan "<h1>XSS_BUG</h1>" (tanpa petik) kemudian klik tombol kirim. lihat bagaimana hasilnya!






<h1>XSS_BUG</h1>
kirim

Akan anda lihat hasil di browser menampilkan tulisan :

XSS_BUG


seperti inilah xss terjadi, xss terjadi karena program web tersebut tidak dilengkapi filter tag-tag html ataupun javascript. Lantas bagaimana menangani bug ini??

Tanpa basa-basi mari kita pelajari bagaimana cara menangani bug XSS dalam program web kita. Berdasarkan contoh diatas tadi , dapat saya simpulkan bahwa XSS terjadi karena program web tidak dilengkapi Filter Tags HTML ataupun Javascript. Jadi untuk menangani bug ini kita cukup memberikan filter pada program web kita.

Caranya :

Dalam PHP sendiri terdapat beberapa fungsi untuk mengganti karakter, diantaranya terdapat: ereg_replace(), eregi_replace(), str_replace(), dll

Anda bisa menggunakan fungsi replce yang mana saja, kali ini saya akan memberikan contoh dengan menggunakan ereg_regplace()






<html>
<head>
<title> Contoh Bug XSS </title>
</head><body>
<form name="form1" action="" method="post">
<input type="text" name="q">
<input type="submit" name="kirim" value="kirim" >
</form>
<?php
if ($kirim)
{
$q=ereg_replace("<","&lt;",$q);
$q=ereg_replace(">","&gt;",$q);
echo $q;
}
?>
</body>
</html> 



coba anda lakukan hal yang sama seperti tadi, ketikan <h1>XSS_BUG</h1> pada text box kemudian klik tombol kirim!

pada perubahan kali ini, bagaimana hasilnya?? Akan anda lihat hasilnya sebagai berikut :

<h1>XSS_BUG</h1>

ini artinya bug XSS tidak berhasil. Program telah mengganti string < menjadi &lt; begitu juga > diganti oleh "&gt;"

Karakter “&lt;” (tanpa petik) dalam PHP dibaca sebagai karakter “<”
sedangkan karakter “<” oleh PHP akan dibaca tags HTML atau JavaScript

Saya cukupkan dulu artikel tentang XSS Bug kali ini, Saya harap anda paham dengan artikel ini.

1 comment:

  1. makasih banyak atas penjelasannya..
    saya jadi pahamm


    salam,
    http://fajarbaguswp.wordpress.com

    ReplyDelete

Komentar anda bila perlu penjelasan (semampu saya tentunya)

silahkan login dulu atau follow blog ini untuk bisa mengisi komentar