Proposal KSI Cross Site Scripting
-
Upload
wildan-abdulgani -
Category
Documents
-
view
242 -
download
3
description
Transcript of Proposal KSI Cross Site Scripting
Cara Pencegahan Cross-site Scripting Pada Website
www.fortunecake.com Dengan Metode Pengkodean
HTML Escape Mode
Dibuat Untuk Memenuhi Tugas Besar Keamanan Sistem Informasi
Dosen: Irawan Afrianto S.T., M.T.
OLEH:
10111385 Verbri Lerikave Manuel
10111391 Asep Ahadiaturrohman Nuroja
10111395 Taufik HidayatSupratman
10111398 Yudha Taufik Nugraha
10111402 Wildan Abdulgani
KELAS KSI-3
Program Studi Teknik Informatika
Fakultas Teknik Dan Ilmu Komputer
2015
Daftar Isi1. Latar Belakang Masalah........................................................................................................................3
2. Identifikasi Masalah...............................................................................................................................4
3. Maksud Dan Tujuan...............................................................................................................................4
4. Batasan Masalah.....................................................................................................................................4
5. Deskripsi Sistem......................................................................................................................................4
1. Fortunecake.com.....................................................................................................................4
2. Macam – Macam Celah Keamanan Web.............................................................................5
3. Pencegahan CROSS SITE SCRIPTING...............................................................................9
Daftar Pustaka...........................................................................................................................................11
1. Latar Belakang Masalah
Keamanan web atau web security adalah suatu proses untuk mengamankan suatu
web. Proses ini berupa suatu mekanisme yang bekerja untuk mencegah akses dan
modifikasi oleh user yang tidak dikenal, terhadap data-data dari web yang tersimpan
secara online. Untuk suatu web application yang tidak mengimplementasikan suatu
sistem keamanan dalam sistemnya, maka sudah jelas akan meninggalkan celah besar
yang bisa dimanfaatkan oleh hacker maupun cracker untuk menembusnya. Sedangkan
untuk suatu web yang sudah memiliki sistem keamanan di dalamnya, celah ini bisa saja
muncul karena terlewatnya satu sisi keamanan dari web tersebut yang tidak diperhatikan
sebelumnya saat perancangan sistem keamanan, ataupun bisa juga dikarenakan
meningkatnya kemampuan seorang hacker ataupun cracker untuk menembus sistem
keamanan suatu web.
Dari sekian banyak ancaman yang bisa dilakukan para hacker maupun cracker
terhadap kemanan web, terdapat satu cara yang bisa dikatakan berbahaya dan paling
banyak ditemukan di website manapun termasuk website seperti google, facebook,
Amazon, Paypal, dll. Ancaman tersebut adalah Cross-site Scripting atau sering disingkat
XSS.
XSS merupakan jenis serangan ke sebuah situs dengan cara ’menyisipkan’ kode
script (biasanya JavaScript) ke dalam sebuah situs. Hal ini hanya akan berhasil jika situs
tersebut memiliki fitur untuk menampilkan kembali isian form ke web browser, seperti
form komentar. Penanganan untuk Cross-site Scripting merupakan hal yang sangat
penting, terutama dalam pembuatan kode form dengan PHP. Karena form pada dasarnya
dapat diinput oleh siapa saja, maka kita perlu memproteksi situs dari kode-kode
berbahaya yang bisa diinput oleh user melalui form.
Melihat banyak sekali website-website yang menggunakan form pengisian entah itu
untuk komentar atau untuk hal lainnya maka ancaman terhadap Cross-site Scipting ini
pun jadi mudah untuk didapat dan ditemukan, namun susah untuk diatasi. Maka akan
dibahas Cara Validasi Form untuk Mencegah Cross-site Scripting.
2. Identifikasi Masalah
Berdasarkan latar belakang masalah yang telah dipaparkan diatas, maka dapat di
identifikasi bahwa yang menjadi pokok permasalahan adalah bagaimana Cara Validasi
Form untuk Mencegah Cross-site Scripting.
3. Maksud Dan Tujuan
Maksud dari pembahasan ini adalah untuk menjelaskan cara mencegah ancaman dari
Cross-site Scripting dengan validasi form. Tujuan dari pembahasan ini adalah membuat
form tervalidasi sehingga tidak bisa terserang ancaman Cross-site Scripting.
4. Batasan Masalah
Merujuk pada paparan latar belakang masalah, agar pembahasan ini lebih terarah,
maka masalah dibatasi hanya pada hal-hal sebagai berikut:
1. Website yang akan di uji cobakan pencegahan terhadap XSS ini adalah
www.fortunecake.com
5. Deskripsi Sistem
1. Fortunecake.com
Didalam era jaman digital sekarang ini, internet dan gadget dapat membantu
mempermudah pengguna nya dalam mengakses jual-beli barang secara online, mencari ilmu
dan segala hal yang terdapat didalamnya. Pengguna dapat memesan barang dan membeli
barang tanpa perlu datang ke toko penjual dalam memilih atau mencari barang yang
diinginkan seperti contoh nya website Fortunecake.com.
Website Fortunecake.com merupakan salah satu website khusus untuk penjualan online
dibidang aneka kue. Website Fortunecake.com diciptakan untuk mempermudah pembeli
dalam memilih aneka kue dan memesan kue yang diinginkan tanpa perlu mendatangi
langsung toko penjual kue. Didalam website ini terdapat menu pilihan-pilihan aneka kue
yang diperjualkan dan user bebas memilih. Dalam pemesanan kue yang telah dipilih user
harus menjadi member terlebih dahulu untuk dapat memesan dan memilih metode
pembayarannya. Untuk menjadi member, user hanya perlu membuat akun dan mengisi
persyaratan yang terdapat didalam menu sign up untuk memiliki username dan password.
Setelah memiliki akun member, user dapat memesan kue yang dipilih dengan pilihan transfer
atau Cash On Delivery (COD) dalam metode pembayarannya.
2. Macam – Macam Celah Keamanan Web
Dalam sebuah website harusnya tidak memungkinkan untuk mengekploitasi web
tersebut, untuk itu diperlukan sebuah upaya dalam menganalisa celah - celah keamanan yang
ada, adapun celah –celah tersebut antara lain :
a. Unvalidated input
semua aplikasi web menampikan data dari HTTP request yang dibuat oleh user dan
menggunakan data tersebut untuk melakukan operasinya. Hacker dapat memanipulasi
bagian-bagian pada request (query string, cookle information, header) untuk membypass
mekanisme keamanan. Berikut ini tiga jenis penyerangan yang berhubungan dengan masalah
ini:
a. Cross site scripting
b. Buffer overflow
c. Injection flaws
b. Broken Access Control
Banyak aplikasi yang mengkategorikan user-usernya ke dalam role yang berbeda dan
level yang berbeda untuk berinteraksi dengan content yang dibedakan dari kategori-kategori
tersebut, salah satu contohnya, banyak aplikasi yang terdapat user role dan admin role: hanya
admin role yang dijinkan untuk mengakses halaman khusus atau melakukan action
melakukan action administration.
Masalahnya adalah beberapa aplikasi tidak efektif untuk memaksa agar otomatis ini
bekerja contohnya, beberapa program hanya menggunakan sebuah chekpoint dimana hanya
user yang terpilih yang dapat mengakses: untuk proses lebih lanjut, user harus membuktikan
dirinya menjalankan pengecekan dari chek point sebelumnya: dimana apabila user berhasil
melewati halaman login, mereka dapat bebas menjalankan operasi. Masalah lain yang
berhubungan dengan access control adalah :
a) Insecure Ids (Id Tidak aman) – beberapa site menggunakan id atau kunci yang
menunjukan kepada user atau fungsi. ID dapat juga ditebak, dan jika hacker dapat
mudah menebak ID dari user yang terautorisasi, maka site akan mudah diserang.
b) File permissions- kebanyakan web dan aplikasi server percaya kepada external file
yang menyimpan daftar dari user yang terotorisasi dan resources mana saja yang
dapat dan/atau tidak dapat di akses. Apabila file ini dapat di baca dari luar, maka
hacker dapat memodifikasi dengan mudah untuk menambahkan dirinya pada daftar
user yang diijinkan.
Langkah–langkah apa saja yang dapat di lakukan untuk mengatasinya? Pada contoh-
contoh tadi, kita dapat mengembangkan filter atau komponen yang dapat di jalankan pada
sensitive resources, filter atau komponen tadi dapat menjamin hanya user yang terotorisasi
dapat mengakses. Untuk melindungi dari inseure Ids yang dapat memberi acess control, pada
masalah file permission, file-file tersebut harus berada pada lokasi yang tidak dapat di akses
oleh web browser dan hanya role tertentu saja yang dapat mengaksesnya.
c. Broken Authentication dan session Management
Authentication dan session management menunjuk kepada semua aspek dari
pengaturan user authentifikasi management of active session, ini beberapa hal yang perlu di
perhatikan :
1. Password strength-Aplikasi kita harus memberikan level minimal dari keamanan
sebuah password dan mendaftar: aplikasi tidak mengijinkan password dengan
panjang 3-4 atau kata-kata simple yang dapat mudah ditebak oleh hacker.
2. Password use –Aplikasi kita harus membatasi user yang mengakses aplikasi
melakukan login kembali ke sistem pada tenggang waktu tertentu. Dengan cara ini
aplikasi dapat dilindungi dari serangan brute force dimana hacker bisa menyerang
berulang kali untuk berhasil login ke sistem, selain itu, log in yang gagal sebaiknya
dicatat sebagai informasi kepada administrator untuk mengindikasikan kemungkinan
serangan yang terjadi.
3. Password storage – password tidak boleh disimpan di dalam aplikasi. Password harus
disimpan dalam format terenkripsi dan disimpan di file lain seperti database atau file
password. Hal ini dapat meastikan bahwa informasi yang sensitif seperti password
tidak disebarkan ke dalam aplikasi.
Issue lain yang berhubungan: password tidak boleh dalam bentuk hardcode didalam
source code. Session ID Protection – server biasanya menggunakan session Id untuk
mengidentifikasi user yang msauk kedalam session. Akan tetapi jika session ID ini dapat
dilihat oleh seseorang pada jaringan yang sama, orang tersebut dapat menjadi seorang client.
Salah satu cara yang dapat digunakan untuk mencegah terlihat sessio ID oleh seseorang
pada suatu jaringan yang sama adalah menghubungkan komunikasi antara server dan client
pada sebuah SSL-protected channel.
d. Cross Site Scripting
Cross Site Script atau kependekannya XSS merupakan salah satu serangan injeksi code
(code injection attack). XSS dilakukan oleh penyerang dengan cara memasukan kode HTML
(HyperText Markup Language) atau client script code lainnya kesuatu situs. Serangan ini
akan seolah-olah datang dari situs tersebut akibat serangan ini antara lain penyerang dapat
mem-bypass keamanan disisi klkien, mendapat informsi sensitif, atau menyimpan aplikasi
berbahaya. Alasannya kependekan yang digunakan XSS bukan CSS karena CSS sudah
digunakan untuk cascade syle sheet. Cross site Scripting atau XSS memiliki Tipe XSS
antara lain:
1. Reflected XSS atau nonpersitent
Reflected XSS merupakan tipe XSS yang paling umum dan yang paling
mudah dilakukan oleh penyerang. Penyerang menggunakan social engineering agar
tautan dengan kode berbahaya ini diklik oleh pengguna. Dengan cara ini penyerang
bisa mendapatkan cookie pengguna yang bisa digunakan selanjutnya untuk membajak
session pengguna.
Mekanisme pertahanan menghadapi serangan ini adalah dengan melakukan
validasi input sebelum menampilkan data apapun yang di-generate oleh pengguna.
Jangan percaya apapun data yag dikirim oleh pengguna.
2. Stored XSS
Stored XSS lebih jarang ditemui dan dampak serangannya lebih besar. Sebuah
serangan stored XSS dapat berakibat pada seluruh pengguna. Stored XSS terjadi saat
pengguna diizinkan untuk memasukan data yang akan ditampilkan kembali.
Contohnya adalah pada message board, buku tamu, dll. Penyerang memasukkan kode
HTML atau client script code lainnnya pada posting mereka. Serangan ini lebih
menakutkan. Mekanisme pertahanannya sama dengan reflected XSS: jika pengguna
diizinkan untuk memasukkan data, lakukan validasi sebelum disimpan pada aplikasi.
e. Buffer over Flow
Kelemahan Buffer overflow adalah salah satu dari banyak kelemahan dari keamanan
komputer. Kelemahan jenis ini dapat digunakan pada remote acces atau local acces atau,
karena ini dapat memberikan si Attacker kesempatan untuk melancarkan jurus-jurus dengan
coding di komputer target.
Serangan Buffer overflow terjadi ketika si attacker emberikan input yang berlebihan
pada program yang di jalankan, sehingga program mengalami kelebihan muatan dan memory
tidak dapat mengalokasikannya. Ini memberikan kesempatan kepada Attacker untuk
menindih data pada program dan men take over kontrol porgram yang dieksekusi attacker.
Buffer over flow hasil dari kelemahan bahasa pemograman c, c++, fontran, dan assembly,
yang tidak secara otomatis melakukan pengecekan batas input ketika program dieksekusi.
Sebagai akibat dari Buffer overflow dapat menyebatkan crash pada program, atau
mempersilahkan si Attacker untuk mengesekusi perintah atau coding jahatnya untuk
menguasai sistem target, seperti tujuan mengambil alih akun root menggunakan metode
buffer overflow.
f. Injection Flows
Injection flaws,yaitu salah satu teknik hacking yang memanfaatkan celah keamanan
pada basis datanya. dan yang sering digunakan adalah SQL injection dengan memasukan
perintah-perintah SQL pada website yang lemah dalam membuat struktur basis data, akan
memudahkan bagi hacker untuk mendapatkan informasi pribadi, seperti strukur tabel basis
data, kolom-kolom yang terdapat pada tabel basis data tersebut, hingga isi record basis data
tersebut. sehingga hacker bisa mengetahui username atau id dan password admin pengelola
website tersebut.
Dalam hal ini fokus bahasan yang diajukan merupakan cross site scripting yang mana
akan dibahas cara pencegahanya pada point selanjutnya.
3. Pencegahan CROSS SITE SCRIPTING
Adapun cara terbaik untuk menanggulangi cross site scripting dengan cara antara lain :
metode POST, pengkodean karakter special pada link dan validasi pada inputan (textbox atau
text area) yang biasa digunakan sebagai media inputan dalam sebuah web.
1. Metode POST
Metoda POST merupakan metoda pengiriman dimana variabel yang dikirimkan
tidak disertakan pada link yang digunakan. Metoda POST menyembunyikan variabel
yang dikirimkan dari pengguna. Metode ini menjamin kode tidak dapat diinjeksikan
melalui link yang telah didesain oleh penyerang. Penggunaan metode GET dalam
prakteknya akan menghasilkan querystring pada link sehingga kita akan mudah
mengijeksikan code HTML atau JavaScript pada metode GET sedangkan untuk metode
POST variable tersebut disembunyikan contoh :
- Link dengan menggunakann metode GET
http://www.richson.com/halaman1.asp?username=me
- Link dengan menggunakan metode POST
http:// et1/helo.asp
Pada link yang menggunakan metode GET, penyerang dapat menginjeksikan
script html atau javascript sehingga link tersebut menjadi
http://www.richson.com/halaman1.asp?username=<script language =
“JavaScript”>alert(‘Hi’)</script> maka hal yang akan terjadi adalah akan muncul
sebuah pop up yang bertuliskan Hi
2. Pengkodean Special Karakter Pada Link
Untuk men-non aktifkan kode script yang diijeksikan, kita perlu membuat aplikasi yang
mampu mengkodekan karakter, sehingga karakter tersebut tidak dimengerti oleh browser
yang digunakan. Proses pengkodean juga harus mencangkup HTML escape code
(%hexnumber). Fungsi yang digunakan merupakan fungsi htmlspecialchars() yang
disimpan dalam link sehingga ketika menginjeksikan script html atau javascript maka
html akan merubah script yang diinputkan penyerang menjadi karakter khusus yang tidak
akan diproses oleh html. [1]
3. Validasi inputan
Validasi inputan merupakan validasi yang ampuh dilakukan dikarenakan biasaya cracker
melakukan penyerangan menggunakan media ini. Adapun penambahan fungsi yang harus
dilakukan untuk memvalidasi inputan ini yaitu dengan menggunakan fungsi
htmlspecialchars() yang mana fungsi ini mengubah karakter karakter yang memiliki
makna di HTML dan JavaScript menjadi named entity yaitu mengkonversikan karakter
khusus. Adapun fungsi lain yang biasa digunakan yaitu dengan fungsi strip_tags() yang
mana fungsi ini akan menghilangkan tag HTML atau JavaScript dari inputan user. Dalam
prakteknya penggunaan fungsi htmlspecialchars() dan strip_tags() tergantung pada alur
logika form yang dibuat misalkan untuk isian form seperti user_name, email dan alamat
akan lebih aman jika tidak diperbolehkan tag html sama sekali sehingga digunakan fungsi
strip_tags() sedangankan untuk isian komentar penggunaan beberapa tag masih
diperlukan sehingga fungsi strip_tags() yang dipakai untuk variabel komentar menjadi
$komentar = strip_tags($komentar,’<a><b><i>’) sedangkan penggunaan fungsi
htmlspecialchars() lebih ditekankan pada isian form nama. [2]
Daftar Pustaka
[1] R. U. Tambun, “cross site scripting,” 2004. [Online]. Available:
http://budi.insan.co.id/courses/ec5010/projects/richson-report.pdf. [Diakses 17 05 2015].
[2] Andre, “Dunia Ilmu Komputer,” [Online]. Available: http://www.duniailkom.com/tutorial-form-php-
validasi-form-untuk-mencegah-cross-site-scripting-dan-html-injection/. [Diakses 17 05
2015].