Anda di halaman 1dari 29

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

Anda mungkin juga menyukai