Monday, July 18, 2011

Mencegah Website Dari Serangan XSS

Pada bahasan-bahasan sebelumnya, kita telah membahas tentang dasar/konsep pembuatan form dengan HTML dan PHP. Nah, sekarang mari kita tes, seberapa amankah script tersebut dari serangan peretas.
XSS (Cross Site Scripting) adalah salah satu teknik hacking yang menggunakan metode script injection melalui celah tertentu pada suatu halaman website. Celah tersebut terkadang bisa melalui input form, atau dengan cara memodifikasi parameter URL. Adapun script yang di-injeksikan terdapat beberapa macam, bisa HTML Tag, JavaScript, PHP, ASP (sesuai web server), dll.



Sekarang mari kita coba pada form html yang menggunakan metode POST berikut,
<html>
<head>
<title>Form in One file</title>
</head>
<body><center><h5>
<?php
if ($_POST) {
echo “Anda tinggal di ” . $_POST['alamat'];
} else {
?>
<form action=”" method=”POST”>
Alamat : <input type=”text” name=”alamat”>
<input type=”submit” value=”Proses”>
</form>
<?php
}
?>
<br><br><p>
Copyright @ www.almansyurin.web.id
</body>
</html>
Script tersebut diatas, akan menghasilkan sebuah form yang bernama Alamat. Sekilas form tersebut terlihat biasa-biasa saja, namun coba kita injeksikan HTML Tag berikut pada form tersebut.
<body bgcolor=”black”><center><font color=”green” size=”30″>
This Site Was Hacked
</font></center></body>
Dan lihat apa yang terjadi, web server akan tetap memproses input HTML Tag tersebut, dan menampilkanya pada web browser. Terus pertanyaanya adalah, apa dampak yang ditimbulkan dari serangan XSS tersebut?? toh itu juga tidak merusak server, hanya merubah tampilanya saja?? Hal tersebut akan kita kupas di akhir bahasan nanti.
Berikut contoh lain serangan XSS yang dilakukan melalui modifikasi parameter URL (Uniform Resource Locator). Hal ini biasa terjadi pada form HTML yang menggunakan metode GET. Lihatlah parameter URL berikut,
http://www.almansyurin.web.id/onefile.php?alamat=Mojokerto
Sekarang bagaimana kalau kita sisipkan kode JavaScript berikut di belakang parameter tersebut. Lebih tepatnya, ganti kata “Mojokerto” dengan script di bawah ini,
<script>alert(“Is This Vulnerable!”);</script>
Dan kode Javascript pun akan tetap diproses, dan ditampilkan kembali pada web browser client. Serangan XSS semacam ini disebut “Reflected XSS”, karna hanya akan dipantulkan kembali ke client tersebut.
Walaupun HTML Tag dan Javascript injection ini tidak berpengaruh besar pada sisi server, namun hal ini juga termasuk vulnerable. Karena dapat merusak tampilan website tersebut, dengan sedikit kreatifitas dari si peretas.
Nah, bagaimana sekarang kalau kita injeksikan kode Javascript berikut,
<script>prompt(“Masukan Nomor PIN Anda?”,” “);</script>
Pengunjung/Client yang masih awam, pastinya akan dengan mudah percaya dan kemudian memasukan PIN mereka tersebut. Tapi bagaimana cara kerjanya, kalau hal tersebut hanya dipantulkan pada web browser si peretas??
Jawabanya mudah sekali, yaitu dengan LINK HTML. Dengan membuat link yang menuju pada halaman yang sudah kita injeksikan tersebut, para korban akan lebih mudah tertipu. LINK tersebut juga dapat kita masukan ke website korban melalui fasilitas GuestBook, atau Komentar.
Saya disini tidak mengajarkan untuk berbuat jahat, namun memang itulah apa adanya yang harus kita ketahui. Dan untuk pencegahanya, kita dapat menggunakan fungsi khusus “htmlspecialchars” dari PHP. Tambahkan fungsi tersebut seperti contoh-contoh berikut,
//contoh method POST
$umur = htmlspecialchars($_POST['age']);
//contoh method GET
$nama = htmlspecialchars($_GET['name']);
//contoh langsung
echo “Alamat : ” . htmlspecialchars($_POST['alamat']);
Fungsi khusus tersebut adalah untuk memfilter semua input dari client, untuk dirubah menjadi STRING. Sehingga akan tampil apa adanya.
Sedangkan untuk serangan XSS mengguanakn PHP sebagai bahan injeksinya, sebagian besar tidak akan berfungsi. Karna script tersebut akan langsung dirubah menjadi STRING. Lebih mudahnya adalah, tidak bisa menjalankan PHP di dalam PHP.
Untuk mengakali hal tersebut pun, kita masih bisa menggunakan fungsi eval(), yang tentunya Insya Allah akan kita ulas di bahasan berikutnya. AJKH
Artikel by: almansyurin @ moedzta97@gmail.com
Post a Comment