Mencegah serangan XSS

Bagaimana mengatasi serangan XSS?

XSS atau Cross Site Script merupakan salah satu jenis serangan yang berbahaya dan paling banyak ditemukan di website manapun seperti google, facebook, Amazon, Paypal, dll. Jika anda cek laporan bug pada masing-masing website tersebut maka sebagian besar melaporkan serangan XSS.
Serangan cross-site scripting biasanya digunakan untuk mencuri cookie, penyebaran malware, session hijacking / pembajakan session, dan pembelokkan tujuan / malicious redirects. Serangan ini tipikalnya adalah melakukan injeksi kode javascript terhadap sebuah website sehingga browser mengeksekusi kode/script yang diperintahkan oleh penyerang. Kelemahan ini mudah didapat tapi susah untuk diatasi. Inilah alasannya mengapa XSS banyak ditemukan di berbagai website.
Apa pengertian Cross-site Scripting atau XSS?
Anda mungkin berpikiran kenapa Cross-site scripting itu disingkat jadi XSS bukannya CSS? jawabnya adalah karena CSS sudah lebih familiar pada dunia desain web yaitu Cascading Style Sheet, maka dipilihlah XSS agar tidak menjadi rancu.
Sedangkan penjelasan mengenai XSS adalah suatu jenis serangan web dimana penyerang berusaha untuk menyisipkan script yang berisikan kode jahat terhadap suatu website untuk menjalankan suatu perintah.
Testing / percobaan XSS
Saya sudah menyiapkan halaman untuk pembelajaran XSS, silahkan kunjungi :
http://ethicninja.altervista.org/xss.php
Isi script form tersebut adalah

<html>
<head>
<title>File Belajar cara mengatasi XSS</title>
</head>
<body>
<h1>Belajar cara mengatasi XSS. </h1>
<form action="" method="post">
<input type="text" name="q" value="" />
<input type="submit" value="Search" />
</form>
<?php
if (isset($_POST['q'])) echo 'Anda mencari : '. $_POST['q'];
?>
<br><br>
Ikuti tutorial lengkapnya di <a href="https://www.ethic.ninja/">Ethic Ninja</a>
</body>
</html>
Sekarang anda masukkan script berikut pada inputan pencarian :
<script>alert('Ethic Ninja');</script>
Maka akan muncul popup seperti gambar berikut :
Ini berarti website tersebut memiliki vulnerable XSS. Sekarang kita akan coba melakukan pengambilan cookie dari pengakses, masukkan script seperti berikut :
<script>alert(document.cookie);</script>
Langkah selanjutnya adalah biasanya sang penyerang mengirimkan link yang berisikan perintah XSS, contoh :
http://ethicninja.altervista.org/xss.php?q=%3Cscript%3Ealert%28%27Terimakasih%20cookienya%20;%29%27%29;alert%28document.cookie%29;%3C/script%3E
Aspek target XSS
Target XSS bisa dimana saja, di tempat yang tidak diduga sekalipun, inilah daftar aspek target yang banyak digunakan untuk eksploitasi XSS :
1. URL
2. HTTP referrer objects
3. Parameter GET
4. Parameter POST
5. Window.location
6. Document.referrer
7. document.location
8. document.URL
9. document.URLUnencoded
10. cookie data
11. headers data
12. database data
Bagaimana cara mengatasinya?
Pertama, lakukan encoding untuk karakter <, >,’ dan “. LIhat encoding dibawah :
& –> &
< –> <
> –> >
” –> “
‘ –> ‘
/ –> /

Untuk fungsi diatas jika anda menggunakan PHP anda dapat memakai fungsi htmlspecialchars() ini akan meng-encode semua Tag HTML dan spesial karakter.
Atau anda dapat menambahkan filter dengan str_replace 
$input = str_replace(array(‘&’,’<’,’>’), array(‘&amp;’,’&lt;’,’&gt;’), $input);
Atau menggunakan Open Source Libraries mengenai pencegahan XSS attack seperti PHP AntiXSS , HTML Purifierxssprotect , XSS HTML Filter
Anda dapat menggunakan salah satu dari library diatas, semuanya sama baiknya yang penting lakukan pencegahan sejak dini, sebelum website anda terkena serangan.



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.
1
2
3
<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,
Sekarang bagaimana kalau kita sisipkan kode JavaScript berikut di belakang parameter tersebut. Lebih tepatnya, ganti kata “Mojokerto” dengan script di bawah ini,
1
<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,
1
<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,
1
2
3
4
5
6
//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

Cara Menghitung Berapa Kecepatan Asli Dalam MBps (Download / Upload)

http://uceng999.com/cara-membaca-mengetahui-berapa/

http://andika-silalahi.blogspot.co.id/2012/10/cara-menghitung-bandwith-dengan.html

https://id.answers.yahoo.com/question/index?qid=20091213065809AAKZaBN

http://motivasee.com/perbedaan-kecepatan-internet-mbps-mbps-kbps-dan-kbps/