Header Ads

Cara Patch Bug XSS ( Cross Site Script )

Kali ini kita akan membahas sedikit tentang XSS dan Cara Menutup Celah XSS , Sebelumnya ane jelasin dulu tentang XSS versi Wikipedia XSS atau Cross Site Script merupakan salah satu jenis serangan yang berbahaya dan paling banyak ditemuin di website manapun seperti google, facebook, Amazon, Paypal, dll. kalo ente cek laporan bug di masing-masing website tersebut maka sebagian besar melaporkan serangan XSS.
Serangan cross-site scripting biasanya dipake buat 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.
XSS merupakan salah satu jenis serangan injeksi code (code injection attack). XSS dilakukan oleh penyerang dengan cara memasukkan kode HTML atau client script code lainnya ke suatu situs. Serangan ini akan seolah-olah datang dari situs tersebut. Akibat serangan ini antara lain penyerang dapat mem-bypass keamanan di sisi klien, mendapatkan informasi sensitif, atau menyimpan aplikasi berbahaya.
Seperti yang di jelasin di atas XSS merupakan salah satu jenis serangan injeksi code (code injection attack) yang penyeranganya pake cara memasukkan kode HTML atau client script code , walau bug (celah) xss sendiri jarang di serang oleh attacker tapi setidaknya kita mengantisipasi.
1. Untuk cara menutup celah xss ini kita menambahkan fungsi htmlspecialchars , oke di bawah ini ada contoh Script yang rawan Xss 👇
Mempunyai Celah XSS 👇
<?php
error_reporting(0);
if(isset($_POST['nama']))
$nama = $_POST['nama'];
?>
<center><form method="post" action="">
Masukan Nama : <input type="text" name="nama" size="20"><input type="submit" value="kirim">
</form>
<?php echo "$nama"; ?> // ini php untuk menampilkan text yang input
Sekarang Kita Tutup XSS mengunakan htmlspecialchars 👇
<?php
error_reporting(0);
if(isset($_POST['nama']))
$nama = $_POST['nama'];
?>
<center><form method="post" action="">
Masukan Nama : <input type="text" name="nama" size="20"><input type="submit" value="kirim">
</form>
<?php
echo htmlspecialchars($nama); ?> // ini yang sudah di tutup xssnya
2. Cara Mengatasi Serangan XSS
Disini ane cuma menerangkan tempat dimana XSS dapat dilakukan
XSS yang paling banyak digunakan adalah jenis GET dan POST.
Salah satu contoh yang akan dibahas adalah jenis GET.
Masukin script alert sederhana ini pada URL yang mempunyai request GET 👇
http://localhost/Momonimo/search?search_key=<script>alert('XSS TRUE')</script>
kalo halaman tersebut (yang mempunyai database) dapat melakukan XSS, maka akan tampil alert 'XSS TRUE'
Mengatasi XSS
---------------------------------------------------
PHP sangat handal dalam melakukan konversi string dengan cepat. Tetapi jenis apa yang akan anda lakukan jika hal diatas terjadi?
Ane melakukan survey terhadap teman-teman programmer.
Gak sedikit yang jawab "Pake ajah htmlentities() atau strip_tags()"
htmlentities() emang bisa melakukan konversi tag-tag HTML, tapi gimana dengan Javascript?
strip_tags() emang bisa melakukan konversi tag-tag HTML dan PHP dengan NULL byte, tapi gimana dengan Javascript?
Lalu apa yang harus dilakukan?
Ane pake filter_var() dengan tipe filter Sanitize
Caranya sebagai berikut 👇
filter_var($val, FILTER_SANITIZE_STRING);
Dan hasilnya adalah
Tidak ada listing"alert(test XSS)"
Berikut adalah Fungsi buat keseluruhannya 👇
function xss_filter($val) {
$val = htmlentities($val);
$val = strip_tags($val);
$val = filter_var($val, FILTER_SANITIZE_STRING);
return $val;
}
Ane bikin Fungsi diatas (dengan menambahkan htmlentities dan strip_tags) agar XSS key yang digunakan dapat terbaca semua. Semata-mata hanya ingin membuat rasa penasaran para Attacker 😉
Semoga Bermanfaat , if something goes wrong or if you want to add, please contact me


5 comments:

Silahkan Komentar dengan bahasa yang sopan

Powered by Blogger.