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="http://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.
Share on Google Plus

1 comment:

We’re eager to see your comment. However, Please Keep in mind that all comments are moderated manually by our human reviewers according to our comment policy, and all the links are nofollow. Using Keywords in the name field area is forbidden. Let’s enjoy a personal and evocative conversation.