Anda adalah seorang developer web?? Jika jawabannya adalah “Ya”, maka Anda tentu sudah tidak asing lagi dengan yang namanya XSS. XSS atau juga biasa disebut dengan Cross Site Scripting adalah sebuah teknik serangan terhadap suatu sistus web dengan cara menyisipkan kode pada komponen form sehingga script (biasanya bersifat merusak) tersebut dijalankan secara tidak sengaja oleh website itu sendiri.
Untuk lebih jelasnya kita langsung saja ke contoh kasus. pertama buatlah sebuah file PHP dengan sebuah form yang didalamnya terdapat sebuah text area. Tak lupa jangan ketinggalan tombol submitntya ya.. :]
Selanjutnya, berilah nama textarea tersebut dengan nama “xss”.Jika sudah sampai disini, kita harus membuat sebuah database untuk mengetahui efek serangan dari XSS ini, untuk itu bukalah phpmyadmin Anda dan buat lah sebuah database dengan nama “xss”.
Selanjutnya, buatlah sebua table untuk menampung data dari text area xss tersebut dengan nama tb_xss dimana didalamnya terdapat dua buah field dengan nama “xss” juga dengan tipe “text” dan sebuah id field sebagai kunci utama dari table ini dengan tipe int auto increment.
Ok, selanjutnya untuk melengkapi form yang kita buat, biasanya ada sebuah file sebagai aksi dari form tersebut dan ada juga sebuah file yang berfungsi untuk menampilkan data(front endnya la kira-kira hehehe..). ok simple saja, kita buat sebuah file php baru dan beri nama dengan “aksisxss.php”. Jika sudah, ketikanlah kode dibawah ini.
<?phpLangkah selanjutnya adalah membuat lagi sebuah file php baru dengan nama tampilxss.php. file ini berfungsi untuk menampilkan data yang ada pada table rb_xss. Ketikanlah kode berikut pada file ini :
$koneksi=mysql_connect("localhost","root","");
if($koneksi){
mysql_select_db("xss");
$xss=$_POST['xss'];
$sql="insert into tb_xss set xss='$xss'";
mysql_query($sql) or die(mysql_error()."Gagal melakukan penyimpanan");
header("location:tampilxss.php");
}
?>
<body>
TAMPIL XSS <br />
<?php
$koneksi=mysql_connect("localhost","root","");
if($koneksi){
mysql_select_db("xss");
$sql="select * from tb_xss";
$query=mysql_query($sql)or die(mysql_error());
while($data=mysql_fetch_array($query)){
echo $data['xss']."<br>";
}
}
?>
</body>
Sampai disini, kita akan melakukan testing terlebih dahulu mengenai kode kita, oleh sebab itu, isikan jangan lupa isikan action=”aksixss.php” pada tag formnya. Langkah selanjutnya adalah melakukan pengujian seperti berikut :
Jika tidak ada maslah, tampilan Anda seharusnya terlihat seperti gambar diatas. Sekarang.. What the problem?? Ok, masalahnya adalah ketika ada pengguna yang sengaja mengisikan tag html atau tag php pada text area sehingga menimbulkan dampak negative. Coba isikan kode berikut untuk melakukan penyerangan :
Ini Attack<br/>Nah.. coba sekarang Anda jalankan kode diatas. Apa yang terjadi?? Yang terjadi adalah ada sebuah gambar google disana.Memang sih kalo field yang ada adalah field berita tentu tidak ada masalah kalau disertakan gambar, namun yang jadi masalah adalah apabila field trsebut metrupakan field alamat. Apalagi jika yang dimasukkan adalah gambar yang tidak pantah. hehehehe..
<img src="http://obyramadhani.files.wordpress.com/2010/03/google.jpg" height="100" weight="100"/>
Ok, sekarang.. bagaimana cara menangkal nya?? Untuk menangkalnya, kita perlu menyisipkan beberapa kode penangkal seperti berikut :
1. Fungsi striplaslashes : untuk menghilangkan tanda slash pada setiap quote.
2. Fungsi strip_tags : untk mengabaikan tg html maupun tag php
3. Fungsi htmlspecialchars : hampir sama dengan strip_tags hanya lebih spesifik ketag HTML dan javascript yang berupa entitas khusus
4. ENT_QUOTE : karena kita menggunakan fungsi htmlspecialchars, maka bisa titambahkan metode ini untuk mengkonversi tada petik ganda / tunggal secara bersamaan.
Ok, sampai disini mari kita melakukan pengujian, ubahlah kode aksixss.php menjadi seperti berikut
<?phpLakukan kembali penyerangan seperti langkah tadi. jika tidak ada kendala, makan seharusnya web Anda akan terlihat seperi berikut ini :
$koneksi=mysql_connect("localhost","root","");
if($koneksi){
mysql_select_db("xss");
$xss=stripslashes(strip_tags(htmlspecialchars($_POST['xss'],ENT_QUOTES)));
$sql="insert into tb_xss set xss='$xss'";
mysql_query($sql) or die(mysql_error()."Gagal melakukan penyimpanan");
header("location:tampilxss.php");
}
?>
Ok, sebenarnya artikel ini masih ada sambungannya, tapi karena akan menjadi terlalu panjang maka penulis sudahi dulu. Sampai jumpa di artikel selanjutnya.. Huahahahaha..
Ronald Rusli
jambispirit@yahoo.co.id
http://jambispirit.com
Source Code
artikel yang sangat berguna. bagaimana caranya kalau bikin seperti kolom komen blog ini? tag yang diterima bold, miring, link .
salam.
Trima ksh atas kunjungan na
maksudna bikin komen yg seperti pada blog ini atau wordpres anda? Maaf kurang paham isi pertanyaanna. :p