CROSS SITE SCRIPTING

advertisement
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
(<script language="JavaScript">alert('Ho ho ho'')</script>).
</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 <script>alert('Ho ho ho')</script>
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
Download