Friday, October 18, 2013

Cara Aman Pembuatan Website

Mencegah serangan Cross Site Scripting (XSS) atau Script Injection


XSS alias cross site scripting adalah salah satu teknik penyerangan terhadap website yang lemah. Kenapa namanya XSS ? Bukan CSS ? Jawabannya, karna CSS lebih dikenal sebagi cascading style sheet (kalo ga tau CSS tanya ama Wikipedia). Contoh serangan XSS ya itu lho, serangan Mas Dhani Ahmad (Xnuxer) terhadap website KPU 2004 silam. Pada dasarnya, penyerangan XSS dilakukan dengan memasukkan tag-tag HTML ke website korban. Contohnya, guestbook. Jadi skenarionya gini neh, sang attacker mengunjungi website yang lemah, terus mengisi guestbook yang kurang lebih begini:

Hello !
<script type=”text/javascript”>
</script>

Cross site scripting memiliki persamaan dengan sql injection yaitu menyerang bugs yang ada pada program yang dibuat oleh administrator.
contoh sederhana  penggunaan XSS:
Berikut ini ada contoh script sederhana bagaimana bug ini bisa terjadi.Buat file cari.php yang berisi kode berikut:
<html>
<head>
<span class="hiddenSpellError" pre="">Contoh</span> Bug XSS
</head>
<body>
<form id="form1" name="form1" method="post" action="hasil.php">
<table width="200" border="1">
  <tr>
    <td>Cari</td>
    <input type="text" name="cari" />
  </tr>
  <tr>
    &nbsp;
    <input type="submit" name="Submit" value="Submit" />
  </tr>
</table>
</form>
</body>
</html>
Hasilnya adalah 1 buah Textbox dan 1 buah button
tampilan dari code php diatas
tampilan dari code php diatas
Jadi penjelasan kode diatas adalah ketika kita menginputkan nilai apa aja maka aksi/langkah berikutnya adalah menuju hasil.php.
Sekarang bandingkan dengan hasil.php yang berisi kode berikut.
Code:
<html>
<head>
<span class="hiddenSpellError" pre="">Contoh</span> Bug XSS
</head>
<body>
       <?php
               $cari=$_POST['cari'];
               echo "Hasil Pencarian : $cari";
               ?>
</body>
</html>
Nah penjelasan kode diatas adalah ketika kita menginput sesuatu di cari.php maka variabel yang terdapat pada textbox yang bernama cari akan diambil / ditangkap oleh hasil.php lalu akan ditampilkan nilai $cari. Maka hasilnya adalah :
kemudian hasil yang ditampilkan:
Ketika kita menginput dengan menambahkan tag-tag html maka hasilnya adalah
kemudian hasil yang ditampilkan setelah disisipi oleh tag html
Untuk mengetahui cara kerja XSS injection dapat dilihat pada gambar berikut.
skema serangan XSS
skema serangan XSS
Hampir sama dengan SQL injectionXSS injection juga bekerja melalui form masukan. Namun tidak seperti SQL injectionXSS injection ini bertujuan untuk mengelabui clientlain yang membuka halaman yang sama dengan halaman yang sudah dijelajahi oleh penyerang dengan mengambil keuntungan misalnya mendapatkan cookie korban. Cookiebertujuan agar pengguna dapat membuka jendela baru tanpa memasukkan user name danpassword lagi.
Elemen penting dari keberhasilan XSS injection adalah social engineering yang baik dari penyerang. Social engineering yang dimaksud adalah bagaimana penyerang membujuk calon korban untuk mengikuti sebuah link yang di dalamnya mengandung kode “jahat” untuk memperoleh informasi penting yang dimiliki oleh calon korban contohnya cookie.
Untuk Antisipasi
Pencegahan Cross site scripting sebenarnya merupakan bagian dari proses perancangan sistem yang akan diluncurkan oleh penyedia data. Jika sistem tersebut menggunakan teknologi dynamic web page, berbagai pertimbangan perlu dilakukan.
1. Teknologi Static Web Pages
Cara terbaik dan efektif untuk menghindari terjadinya Cross site scripting adalah menghindari penggunaan teknologi dynamic web page. Halaman yang statis tentu saja memberikan kontrol yang lebih di sisi server dibandingkan dengan halaman web yang dinamis. Halaman web yang dihasilkan secara statis akan memberikan kelakukan yang lebih pasti dibandingkan halaman web yang dihasilkan secara dinamis. Konsekuensi yang ditanggung adalah penyedia layanan harus merelakan sifat interaktif yang mungkin diinginkan.
2. Metode POST
Metode POST adalah metode pengirimana data di mana variabel yang dikirimkan tidak disertakan pada link yang digunakan. Metode POST menyembunyikan variabel yang dikirimkan dari pengguna. Metode ini menjamin kode tidak dapat diinjeksikan melalui link yang telah didesain oleh penyerang. Link merupakan satu satunya cara yang dapat digunakan oleh penyerang untuk mengeksploitasi cross site scripting. Oleh karena itu, metode ini ampuh untuk mengatasi cross site scripting. Kekurangan metode ini, pengguna tidak dapat menyimpan link favorit untuk mempermudah navigasi
3. Pengkodean Karakter Spesial pada Link
Untuk men-non aktifkan kode script yang diinjeksikan, kita perlu membuat aplikasi yang mampu mengkodekan karakter tersebut, sehingga karakter tersebut tidak dapat dimengerti oleh browser yang digunakan. Proses pengkodean juga harus mencakup HTML escape code (%hexnumber).
Pemfilteran ini biasanya dilakukan dengan menghilangkan karakter karakter spesial yang penting dalam pengkodean dan juga karakter karakter ekuivalen yang dikodekan. Pengkodean yang biasa digunakan adalah HTML escape
encoding. Tabel di bawah ini menunjukkan karakter tersebut dengan ekuivalen karakter yang telah dikodekan.
Table 9 HTML Escape Encoding
CharCodeCharCode
;%3b{%7b
/%2f}%7d
?%3f|%7c
:%3a\%5c
@40%^%5e
=%3d~%7e
&26%[%5b
<%3c]%5d
>%3e`60%
22%%25%
#23%27%
4. Hilangkan kemampuan Scripting
Cross site scripting disebabkan keberhasilan penyerang menginjeksi kode pada halaman web yang dihasilkan. Jika kode yang diinjeksikan tersebut tidak dapat diinterpretasikan, halaman web dapat ditampilkan dengan aman. Kekurangan metode ini tentu saja kegagalan fungsi-fungsi yang ditulis dengan mengunakan script untuk bekerja.
5. HTTP-Only Cookie
Metode ini membatasi akses yang dapat dilakukan terhadap cookie. Dengan menggunakan HTTP-only cookie, browser pengguna masih dapat menerima cookie yang dikirimkan oleh penyedia layanan. Namun cookie tidak dapat diakses melalui script yang dieksekusi pada browser pengguna. Jadi script yang diinjeksikan kepada browser pengguna tidak akan dapat melakukan transfer cookie yang ada. Metode ini tersedia pada browser Internet Explorer 6 Service Pack 1. Untuk menggunakan metode, pada kepala HTTP response tambahkan atribut HttpOnly.
6. Ikuti Link Utama
Metode ini ditujukan bagi pengguna layanan yang menggunakan halaman web dinamis. Kebiasaan yang baik utuk mengikuti link yang berasal dari link utama yang disediakan oleh penyedia layanan. Link–link selain daripada link utama sebaiknya dihindari.
Semoga dapat membantu. :D
Baca juga :

Disqus Shortname

Comments System

Disqus Shortname

Comments system