CROSS SITE SCRIPTING Tugas Akhir Keamanan Sistem Informasi (EC5010) Oleh Richson Untung Tambun 13200036 DEPARTEMEN TEKNIK ELEKTRO FAKULTAS TEKNOLOGI INDUSTRI INSTITUT TEKNOLOGI BANDUNG 2004 ABSTRAKSI Teknologi dynamic web page kini telah menjadi bagian yang tidak terpisahkan dari kehidupan dunia maya. Teknologi ini membawa perubahan yang signifikan dalam proses pembangunan sistem penyedia layanan dalam jaringan internet. Teknologi ini memampukan penyedia layana untuk memberikan layanan yang lebih inovatif. Efek yang diharapkan tentu saja peningkatan dari segi ekonomi. Namun dibalik keuntungan-keuntungan tersebut, teknologi ini memiliki permasalahan dari segi keamanan. Permasalahan keamanan tersebut dinamakan cross site scripting, atau juga dikenal sebagai XSS. Permasalahan ini tidak boleh dipandang sebelah mata. Kebocoran informasi penting merupakan hal yang dapat terjadi jika kelemahan ini tidak ditangani dengan baik. Tulisan ini mencoba membahas bagaimana cross site scripting itu terjadi. Tulisan ini tidak ditujukan untuk melakukan tindak kriminal. Tulisan ini diarahkan untuk membuka mata pembaca betapa berbahayanya cross site scripting ini. Metoda pencegahan yang dapat diterapkan juga diberikan pada tulisan ini. ii DAFTAR ISI ABSTRAKSI ................................................................................................................ii DAFTAR ISI................................................................................................................iii DAFTAR GAMBAR ...................................................................................................iv DAFTAR TABEL......................................................................................................... v 1 PENDAHULUAN .................................................................................................... 1 1.1 Bagaimana Halaman Web Dihasilkan?............................................................... 1 1.2 Halaman Web Yang Statis Dan Dinamis ............................................................ 3 2 CROSS SITE SCRIPTING......................................................................................... 6 2.1 Cara Kerja Cross Site Scripting .......................................................................... 6 2.2 Web Site Dengan Cross Site Scripting ............................................................... 8 2.2 Informasi Yang Diterbitkan Penyedia Layanan................................................ 13 2.3 Link Dalam Cross Site Scripting ..................................................................... 14 2.4 Pencurian Data .................................................................................................. 15 2.5 Apa Yang Cross Site Scripting Dapat Lakukan? .............................................. 15 3 PENCEGAHAN CROSS SITE SCRIPTING........................................................... 17 3.1 Teknologi Static Web Page............................................................................... 17 3.2 Metoda POST.................................................................................................... 17 3.3 Pengkodekan Karakter Special Pada Link ........................................................ 19 3.4 Hilangkan Kemampuan Scripting ..................................................................... 21 3.5 HTTP-Only Cookie........................................................................................... 22 3.6 Ikuti Link Utama ............................................................................................... 22 4 KESIMPULAN ....................................................................................................... 23 REFERENSI ............................................................................................................... 24 iii DAFTAR GAMBAR Gambar 1. Alur data tipikal untuk halaman web yang statis [4]................................... 2 Gambar 2. Contoh alur data pada halaman web yang dinamis (adaptasi dari [4]) ....... 5 Gambar 3. Contoh kasus cross site scripting ................................................................ 8 Gambar 4. Tampilan halaman web dengan input <script>alert(‘Ho ho ho’)</script>10 Gambar 5. Pesan pop up, mengindikasikan injeksi kode berhasil .............................. 11 Gambar 6. Pengubahan informasi memanfaatkan cross site scripting [3] .................. 16 Gambar 7. Halaman web yang dihasilkan menggunakan metoda POST.................... 18 Gambar 8. Pengkodean pada friendster.com............................................................... 19 Gambar 9. Pengkodean yang berhasil dilakukan pada injeksi script .......................... 21 iv DAFTAR TABEL Tabel 1. Perbandingan antara static web page dengan dynamic web page................... 3 Tabel 2. HTML Escape Encoding [3] ......................................................................... 12 v BAB I PENDAHULUAN Perkembangan dalam dunia maya terjadi sangat pesat. Teknologi baru dirancang dan diimplementasikan untuk memenuhi kebutuhan pengguna yang semakin beragam. Teknologi halaman web termasuk didalamnya. Teknologi yang ada kini telah ber-revolusi menuju ke tingkatan yang berbeda. Halaman web kini tidak lagi statis namun juga dinamis. Kini halaman web yang dinamis merupakan pemandangan yang biasa kita lihat ketika melakukan surfing menggunakan internet. Halaman web yang dinamis merupakan teknologi yang memberi perubahan penyediaan informasi, layanan, dan tampilan secara signifikan. Halaman web yang dinamis memungkinkan interaksi yang lebih baik antara penyedia layanan dengan penggunanya. Dengan menggunakan teknologi ini, halaman web akan terlihat lebih manusiawi. Penyedia layanan dapat menambahkan content-content yang sebelumnya masih merupakan impian belakan. Sisi ekonomi sangat mempengaruhi perkembangan teknologi dynamic web page ini. Perkembangan internet yang pesat menimbulkan kenaikan yang pesat pada jumlah penyedia layanan yang ada. Teknologi ini berkembang ketika persaingan antara penyedia layanan semakin meningkat. Dengan adanya teknologi ini, penyedia berharap dapat memberikan pelayanan yang dapat menarik perhatian pengguna potensial yang ada. 1.1 Bagaimana Halaman Web Dihasilkan? Tampilan web yang kita lihat ketika melakukan surfing melalui internet sebenarnya hanyalah file teks biasa. File tersebut terletak pada sebuah server yang 1 dimiliki oleh penyedia layanan tersebut. File ini dapat diperoleh oleh pengguna dengan sebuah request. File dengan ekstensi tertentu tersebut kemudian ditampilkan dengan menggunakan sebuah program interpreter. Ektensi file yang biasa ditemukan antara lain html, htm, php, asp, cgi dan lain lain. Untuk lebih jelasnya dapat dilihat pada gambar 1. Gambar 1. Alur data tipikal untuk halaman web yang statis [4] Komunikasi yang terjadi pada dunia maya saat ini dapat berjalan dengan baik karena kini telah ada standar bahasa web yang digunakan. Standar itu mencakup format dan juga tata bahasa. Standar tersebut dikembangkan oleh World Wide Web Consortium (W3C). Untuk HTML, standar terakhir yang digunakan adalah XHTML 1.0. Software penerjemah merupakan ujung tombak dari komunikasi ini. Program ini yang akan menampilkan file teks yang telah diterima sehingga dapat dimengerti 2 oleh pengguna. Software penerjemah melakukan proses visualisasi berdasarkan perintah yang terdapat pada file teks yang diperoleh. Kesalahan bahasa pada file teks yang diterima akan menyebabkan kesalahan pada proses penerjemahan. Software penerjemah ini lebih dikenal dengan sebutan browser web. Browser web populer saat ini adalah internet explorer dan keluarga netscape. 1.2 Halaman Web Yang Statis Dan Dinamis Perbedaan mendasar antara proses penyediaan halaman web statis dengan proses penyediaan halaman web yang dinamis terletak pada request dan program penyediaan halaman web pada server yang digunakan. Tabel 1 menunjukkan perbedaan tersebut. Teknologi Request Program pada server Static web page Informasi berisi halaman yang Mengirimkan halaman yang diinginkan diinginkan Halaman tersebut merupakan file yang sama dengan yang terdapat pada server Dynamic web Informasi berisi halaman yang Mengirimkan halaman yang page diinginkan ditambah masukkan isinya berdasarkan pengguna masukkan pengguna Isi halaman yang dikirimkan dapat berbeda dengan yang terdapat pada server Tabel 1. Perbandingan antara static web page dengan dynamic web page 3 Dari tabel 1, kita dapat menyimpukan bahwa teknologi dynamic web page memungkinkan halaman web yang mampu beradaptasi masukan pengguna. Untuk mendukung kemampuan tersebut, server yang menggunakan tekonologi dynamic web page didukung kemampuan bahasa pemrograman. Isi halaman web yang dinamis, terdapat pada server, biasanya berisi script pemrograman dalam bahasa yang biasa terdapat dalam teknologi web seperti JavaScript dan VB. Script pemrograman ini menerima dan memproses variabel – variabel yang dilalukan pengguna ketika request dilakukan. Halaman yang dikirimkan oleh server akan berisi informasi yang sangat tergantung algoritma pemrosesan dari halaman yang terdapat pada server. Gambar 2 menunjukkan contoh alur data halaman web yang dinamis. Halaman web yang dinamis ditunjukkan oleh file helo.asp. Terlihat bahwa file sumber (yang terdapat pada server) berbeda dengan file yang dikirimkan ke pengguna. 4 Gambar 2. Contoh alur data pada halaman web yang dinamis (adaptasi dari [4]) Kemudian timbul pertanyaan? Bagaimana jika variabel yang dikirimkan tersebut bukan berupa data biasa namun berupa kode juga? Apakah yang akan dilakukan server terhadap masukkan ini? Bagaiman halaman web yang dihasilkan oleh server tersebut? Apa akibat input yang tidak wajar tersebut ketika halaman web yang dihasilkan dijalankan di browser client? Cross site scripting didasarkan pada pertanyaan-pertanyaan tersebut. 5 BAB II CROSS SITE SCRIPTING Cross site scripting adalah kelemahan keamanan yang terjadi pada penggunaan teknologi dynamic page. Cross site scripting dapat diartikan sebagai kelemahan yang terjadi akibat ketidakmampuan server dalam memvalidasi input yang diberikan oleh pengguna. Algoritma, yang digunakan untuk pembuatan halaman yang diinginkan, tidak mampu melakukan penyaringan terhadap masukkan tersebut. Hal ini memungkinkan halaman yang dihasilkan menyertakan perintah yang sebenarnya tidak diperbolehkan. Cross site scripting merupakan kelemahan yang populer untuk dieksploitasi. Namun sayangnya, banyak penyedia layanan yang tidak mengakui kelemahan tersebut dan melakukan perubahan pada sistem yang mereka gunakan. Citra penyedia layanan merupakan harga yang dipertaruhkan ketika mereka mengakui kelemahan tersebut. Sayangnya dengan tindakan ini konsumen atau pengguna menjadi pihak yang dirugikan. 2.1 Cara Kerja Cross Site Scripting Cross site scripting bekerja bak penipu dengan kedok yang mampu mengelabui orang yang tidak waspada. Elemen penting dari keberhasilan cross site scripting adalah social engineering yang baik dari si penipu. Social engineering merupakan elemen terpenting yang menentukan keberhasilan penipuan yang akan dilakukan. Cross site scripting memampukan seseorang yang tidak bertanggungjawab melakukan penyalahgunaan informasi penting. 6 Sebelum sampai pada proses penyalahgunaan tersebut, penyerang mengambil langkah-langkah dengan mengikuti pola tertentu. Langkah pertama, penyerang melakukakan pengamatan untuk mencari web-web yang memiliki kelemahan cross site scripting. Langkah kedua, sang penyerang mencari tahu apakah web tersebut menerbitkan informasi yang dapat digunakan untuk melakukan pencurian infomasi lebih lanjut. Informasi tersebut biasanya berupa cookie. Langkah kedua ini tidak selalu dijalankan. Langkah ketiga, sang penyerang membujuk korban untuk mengikuti sebuah link yang mengandung kode, ditujukan untuk mendapatkan informasi yang telah disebutkan sebelumnya. Kemampuan social engineering dari sang penyerang diuji disini. Setelah mendapatkan informasi tersebut, sang penyerang melakukan langkah terakhir, pencurian maupun pengubahan informasi vital. Berikut merupakan contoh kasus dari cross site scripting. Anggap sebuah penyedia layanan message board, A, memiliki kelemahan cross site scripting. Web tersebut juga menghasilkan cookie. Cookie tersebut bertujuan agar pengguna dapat membuka jendela browser baru tanpa memasukkan user name dan password lagi. B, mencoba untuk mengeksploitasi kelemahan ini, meletakkan sebuah link yang mengandung kode yang “jahat” pada message board tersebut. C, seorang pengguna, tertarik pada link tersebut menekan link tersebut. Tanpa disadari C, cookie yang terdapat pada komputernya telah dikirimkan ke komputer B. Kini B dapat mengakses message board sebagai C hanya dengan menggantikan cookienya dengan cookie yang ia dapatkan dari C. Gambar 3 menunjukkan alur dari kejadian tersebut. 7 Gambar 3. Contoh kasus cross site scripting Bagian berikut akan menjelaskan secara lebih mendalam setiap langkah sampai penyalahguanan informasi dapat terjadi. 2.2 Web Site Dengan Cross Site Scripting Pencarian web site dengan kelemahan cross site scripting sebenarnya tidaklah terlalu sulit. Web site yang menghasilkan halaman web yang dinamis merupakan syarat utama yang diperlukan untuk mengeksploitasi kelemahan ini. Web dengan form input merupakan web potensial untuk dieksplotasi cross site scripting. Web yang membutuhkan user name dan password serta search engine termasuk didalamnnya. 8 Syarat berikutnya adalah web tersebut menggunakan metoda get ketika melakukan komunikasi. Methoda get mencantumkan informasi pada field link (juga disebut querystring) yang dikirimkan. Contoh dari link dengan menggunakan methoda get, http://www.richson.com/halaman1.asp?username=me. Ini menunjukkan bahwa web tersebut dapat diinjeksi dengan script. Langkah terakhir adalah memastikan bahwa script yang kita tulis berhasil diinjeksikan. Jika injeksi berhasil dilakukan, contoh link berikut akan menampilkan halaman1.asp dengan pop-up box ketika di klik (pop up box tersebut akan bertuliskan “Ho ho ho ”), http://www.richson.com/halaman1.asp?username=<script language = “JavaScript”>alert (‘Ho ho ho’) </script>. Contoh berikut merupakan merupakan halaman web yang menggunakan form. Data yang dikirimkan berupa nama pengguna. Data dikirimkan dengan menggunakan metoda get. Isi halaman web tersebut adalah sebagai berikut. <HTML> <HEAD> <TITLE> - Contoh halaman menggunakan form </TITLE> </HEAD> <BODY> <form name="input" method="get" action="helo.asp"> Nama user : <input type=text name="username"> <br> <input type=submit value="Send"> </form> </BODY> </HTML> 9 Script file yang bertugas menghasilkan halaman web berdasarkan input dari login.html adalah hello.asp . Isi dari hello.asp adalah sebagai berikut. <HTML> <BODY> <% response.write "Selamat datang " response.write request.querystring("username") %> </BODY> </HTML> Gambar 4. Tampilan halaman web dengan input <script>alert(‘Ho ho ho’)</script> 10 Halaman web dinamis yang dihasilkan oleh server (http://et1/helo.asp?username=%3Cscript%3Ealert%28%27Ho+ho+ho%27%29%3C %2Fscript%3E) berisi script sebagai berikut. <HTML> <BODY> Selamat datang <script>alert('Ho ho ho')</script> </BODY></HTML> Gambar 5. Pesan pop up, mengindikasikan injeksi kode berhasil Injeksi sering kali tidak berhasil dilakukan. Ini dapat terjadi akibat proses pemfilteran di sisi server. Pemfilteran ini biasanya dilakukan dengan menghilangkan karakter karakter spesial yang penting dalam pengkodean dan juga karakter karakter 11 ekuivalen yang dikodekan. Pengkodean yang biasa digunakan adalah HTML escape encoding. Tabel 2 menunjukkan karakter tersebut dengan ekuivalen karakter yang telah dikodekan. Char Code Char Code ; %3b { %7b / %2f } %7d ? %3f | %7c : %3a \ %5c @ 40% ^ %5e = %3d ~ %7e & 26% [ %5b < %3c ] %5d > %3e ` 60% “ 22% % 25% # 23% ‘ 27% Tabel 2. HTML Escape Encoding [3] Namun pemfilteran tersebut dapat dengan mudah dilewati oleh para penyerang dengan menggunakan metode-metode tertentu. Metode tersebut digunakan ketika injeksi tidak berhasil dilakukan. Dengan melihat halaman web dinamis yang dihasilkan, kita dapat mengetahui metoda pemfilteran yang dilakukan. Metoda test dan coba merupakan metoda yang efektif untuk melancarkan serangan balasan terhadap pemfilteran tersebut. Menghilangkan kode “<” dan “>” merupakan salah satu metoda untuk mencegah injeksi kode yang mungkin dilakukan. Routine yang dapat digunakan antara lain document.write(cleanSearchString(‘<>’)). Dengan menggunakan “) +” 12 untuk menghindari rutin tersebut dan penggunaan karakter alternatif “\x3c” (<) dan “\x3e” (>), maka penyerang tetap dapat melakukan injeksi kode. Teknik lain adalah dengan membuat aplikasi yang memfilter kode yang diinjeksikan dengan comment. Jika pada input terdapat <script>code</code> maka halaman yang dihasilkan adalah seperti berikut. <COMMENT> <script>code</script> </COMMENT> Penyerang dapat menghindari dengan menambahkan kode <COMMENT> dan </COMMENT> diantara kode yang ia injeksikan sehingga filter dapat dilewati. Jika input <script></COMMENT><script><code></script><COMMENT> maka halaman yang dihasilkan adalah sebagai berikut. <COMMENT> <script> </COMMENT> <script>code</script> <COMMENT> </COMMENT> Kode tetap dapat diinjeksikan! 2.2 Informasi Yang Diterbitkan Penyedia Layanan Pengecekan ini dilakukan ketika penyerang bertujuan untuk melakukan penyalahguanaan informasi pengguna. Seperti telah disebutkan sebelumnya, informasi yang sering diperiksa adalah cookie. Penyerang dapat melakukan ini dengan terlebih dahulu mendaftar sebagai salah satu pengguna. Penyerang akan 13 memeriksa informasi apa yang terdapat pada cookie tersebut. Apakah cookie tersebut dapat digunakan untuk mengelabuhi server. Tidak semua proses eksploitasi ditujukan pada penyalahgunaan informasi pengguna. Terdapat juga tipe eksploitasi yang ditujukan untuk “mengubah” isi dari informasi atau iklan yang ditampilkan. Tipe eksploitasi seperti ini tidak membutuhkan penyediaan informasi, seperti cookie. 2.3 Link Dalam Cross Site Scripting Bagian ini sangat menarik karena mencakup aspek social engineering. Cross site scripting merupakan lubang yang timbul akibat ketidakmampuan server untuk mengecek input yang diberikan pengguna. Jadi titik berat keberhasilan eksploitasi kelemahan ini terletak pada pengguna. Bagaimana membujuk pengguna untuk mengklik link yang disediakan oleh penyerang. Link ini biasa diletakkan pada e-mail, message board, dan lain lainnya. Untuk menghindari pemfilteran, penyerang perlu untuk mengkodekan link yang ia buat ke bentuk yang akan terlihat aneh bagi pengguna. Pengkodean biasanya menggunakan HTML Escape encoding yang menggunakan karakter yang telah terkodekan seperti ditunjukkan pada Tabel 2. Jika kode yang akan disertakan dalam link cukup panjang, pengguna akan curiga dan mengurungkan niatnya (walau sebaik apapun social engineering yang dilakukan). Untuk mengkamuflasekan link ini, penyerang menggunakan nama lain yang lebih menarik daripada langsung meletakkan link tersebut. Alih-alih meletakkan link http://trustedsite.org/page1?name=%3cscript%3esomecode%3c/script%3e, akan lebih baik membuat link dengan nama click me yang merujuk pada link yang sama. Walaupan link yang sebenarnya akan terlihat pada bagian bawah kiri dari browser, pengguna pada umumnya kurang memperhatikan kejanggalan yang ada dan langsung mengklik link tersebut. 14 Cara lain untuk memastikan bahwa link tersebut akan dijalankan adalah dengan menggunakan perintah onmouseover. Dengan menggunakan perintah ini, link beserta kode yang terdapat didalamnya dapat dijalankan ketika cursor bersada diatas link tersebut. Dengan cara ini, persentase keberhasilan cross site scripting terjadi semakin besar. 2.4 Pencurian Data Pencurian data dengan menggunakan informasi yang diperoleh seperti cookie ditujukan pada penyalahgunaan informasi pengguna. Cookie yang dihasilkan penyedia layanan berisi informasi yang bermacam – macam. Jika informasi ini berhasil didapakan maka penyalahgunaan dapat terjadi. Cookie, tipe berbeda, digunakan sebagai alat identifikasi selama session berlangsung (session berlangsung ketika pengguna log-in sampai pengguna log-out). Jika penyerang berhasil mendapatkan cookie seorang pengguna selama session berlangsung, penyerang bisa mendapatkan akses sebagai pengguna hanya dengan mengubah cookie yang ia gunakan dengan cookie yang ia dapatkan dari korban. Hal lain yang terpenting ketika pencurian dilakukan adalah kesan yang diberikan pada korban. Sering kali halaman web menampilkan broken link ketika eksploitasi dilakukan. Untuk menghindari kecurigaan korban, biasanya penyerang membuat script yang akan menampilkan halaman yang diminta. 2.5 Apa Yang Cross Site Scripting Dapat Lakukan? Pengubahan informasi yang disediakan atau iklan yang ditampilkan penyedia layanan. Gambar 6 menunjukkan hal tersebut. 15 Gambar 6. Pengubahan informasi memanfaatkan cross site scripting [3] Link yang digunakan oleh penyerang berisi kode yang menampilkan halaman dengan kerangka yang berasal dari site asli namun dengan isi sesuai dengan yang diinginkan penyerang. 16 BAB III PENCEGAHAN CROSS SITE SCRIPTING Pencegahan seperti kata pepatah lebih baik daripada pengobatan. 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. 3.1 Teknologi Static Web Page 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. 3.2 Metoda POST Metoda POST adalah metoda pengirimana data dimana variabel yang dikirimkan tidak disertakan pada link yang digunakan. Metoda POST menyembunyikan variabel yang dikirimkan dari pengguna. Metoda ini menjamin kode tidak dapat diinjeksikan melalui link yang telah didesain oleh penyerang. Link 17 merupakan satu satunya cara yang dapat digunakan oleh penyerang untuk mengeksploitasi cross site scripting. Oleh karena itu, metoda ini ampuh untuk mengatasi cross site scripting. Kekurangan metoda ini, pengguna tidak dapat menyimpan link favorit untuk mempermudah navigasi. Gambar 7 menunjukkan halaman web yang dihasilkan dengan menggunakan metoda post. Halaman web yang berisi form dan file helo.asp diambil dari contoh bagian 2.2. Perubahan dilakukakan agar transfer data dilakukan dengan methoda POST. Gambar 7. Halaman web yang dihasilkan menggunakan metoda POST (Perhatikan link pada field address. Link tidak mengikutsertakan query ) 18 3.3 Pengkodekan Karakter Special 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). Gambar berikut menunjukkan web dengan proses pengkodean yang baik. Link yang dimasukkan pada field address dari browser adalah: http://friendster.com/user.php?uid=<script%20language="JavaScript">alert('Ho%20h o%20ho'')</script>. Gambar 8. Pengkodean pada friendster.com Penggalan soure code dari halaman yang dihasilkan oleh server berikut, menunjukkan pengkodean yang dilakukan oleh penyedia layanan friendster beta. <div class="error"> 19 <h1>Invalid User ID</h1>Error Invalid User ID (&lt;script language="JavaScript"&gt;alert('Ho ho ho'')&lt;/script&gt;). </div> <div><p class="buttonbox"><a class="submitbutton" href="/home.php">Home</a></p></div> Proses pengkodean diatas mengunakan format UTF-8 untuk mengkodekan karakter spesial. Pada contoh penggalan kode diatas ‘<’ dikodekan menjadi &ltd an ‘>’ dikodekan menjadi &gt. Dengan pengkoden tersebut script yang ada tidak akan dijalankan. Rutin sederhana yang dapat melakukan proses pengkodean diatas adalah Server.HTMLEncode(string). Berikut ditampilkan perbaikan halaman web yang menjadi contoh pada bagian 2.2. Source file helo.asp yang telah mengalami perbaikan ditunjukkan pada bagian berikut. <HTML> <BODY> <% response.write "Selamat datang " response.write server.htmlencode(request.querystring("username")) %> </BODY> </HTML> Source file dari halaman web dinamis yang dihasilkan server (http://et1/helo.asp?username=%3Cscript%3Ealert%28%27Ho+ho+ho%27%29%3C %2Fscript%3E). <HTML> <BODY> Selamat datang &lt;script&gt;alert('Ho ho ho')&lt;/script&gt; 20 </BODY> </HTML> Gambar 9. Pengkodean yang berhasil dilakukan pada injeksi script 3.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 metoda ini tentu saja kegagalan fungsi-fungsi yang ditulis dengan mengunakan script untuk bekerja. 21 3.5 HTTP-Only Cookie Metoda 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. Metoda ini tersedia pada browser Internet Explorer 6 Service Pack 1. Untuk menggunakan metoda, pada kepala HTTP response tambahkan atribut HttpOnly. 3.6 Ikuti Link Utama Metoda 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. 22 BAB IV KESIMPULAN Cross site scripting merupakan kelemahan yang dapat dieksploitasi dengan mudah. Pemilihan metoda pencegahan disesuiakan dengan kebutuhan dari penyedia layanan yang ada. Yang terpenting, penyedia layanan mampu menjamin keamanan data dari pengguna yang ada. Pengguna sebagai konsumen harus lebih waspada dalam melakukan proses browsing. Selain itu pengguna juga harus proaktif, mencari informasi lebih lanjut mengenai sistem keamanan dari penyedia layanan yang akan atau sedang ia gunakan. Tindakan perbaikan terhadap sistem yang berjalan sebaiknya tidak terjadi. Hal ini hanya akan membawa kerugian baik bagi pengguna maupun penyedia layanan. 23 REFERENSI [1] Kurniawan, Andy. Agustus 2001. Belajar Sendiri Microsoft Active Server Pages. PT Elex Media Komputindo. Jakarta. [2] http://msdn.microsoft.com/workshop/author/dhtml/httponly_cookies.asp. Mitigating Cross-site Scripting With HTTP-only Cookies. [3] Ollman, Gunter. 2003 . HTML Code Injection and Cross-site scripting, Understanding the cause and effect of CSS (XSS) Vulnerabilities. ISS Advisor. [4] Pohan, Husni I. Beta, Sidik. Agustus 2003. Pemrograman WEB dengan HTML. Penerbit Informatika Bandung 24