MENJAGA KEAMANAN APLIKASI WEB
Apakah Anda sudah menonton film “I Am Legend” di tahun 2007 lalu, yang dibintangi oleh Will Smith? Di akhir film, sang jagoan yang bernama Robert Neville terperangkap dalam sebuah ruangan tertutup. Joko Nurjadi
SEMENTARA itu di luar ruangan, sekumpulan zombie ganas berusaha mendobrak masuk. Apakah Anda mengetahui bagaimana akhirnya?
Situasi yang dialami Robert Neville, mungkin bisa dijadikan analogi sebuah website, yang bisa jadi menghadapi serangan zombie berupa upaya-upaya pembobolan dari pihak luar. Seperti Robert Neville juga, website tersebut tidak bisa ke mana-mana, pilihan satu-satunya adalah mempertahankan diri.
Keamanan Website
Serangan terhadap website secara garis besar dapat dibagi menjadi dua, yaitu serangan terhadap web server dan serangan terhadap aplikasi web, yang memanfaatkan kelemahan aplikasi dan pemrograman. Untuk menghadapi serangan pada web server, Anda memerlukan network/web administrator untuk melakukan konfigurasi, meng-update web server ataupun melakukan monitoring secara berkala.
Sedangkan, serangan yang ditujukan pada aplikasi web lebih merupakan tanggung-jawab programer. Banyak istilah hacking dan turunannya telah dihasilkan dari serangan yang terjadi pada aplikasi web, antara lain Script Injection, Cross Site Scripting (XSS), SQL Injection, Buffer Overfl ows, dan masih banyak lagi.
Artikel ini akan membahas beberapa contoh serangan yang dapat terjadi pada aplikasi web dan bagaimana penanggulangannya agar dapat memaksimalkan keamanan aplikasi web Anda.
Tentu saja, isu keamanan tidak akan beres dengan sekali kerja, seperti halnya siskamling, keamanan terus dilakukan dan tidak akan pernah berhenti.
Login, Jaga Username Anda!
Dimulai dari hal yang terlihat sangat sederhana, tetapi pada praktiknya cukup banyak terjadi kebobolan dari sisi ini, yaitu halaman login yang mengandalkan username dan password. Anda mungkin telah cukup banyak membaca dan mendengar saran-saran mengenai password yang baik, misalnya harus terdiri dari kombinasi huruf dan angka, ataupun secara berkala mengganti password.
Tetapi, tidak banyak yang menyinggung mengenai keamanan username. Padahal pada sebuah halaman login, username bisa dianggap lapis keamanan yang pertama.
Bagi oknum yang sengaja ingin menebak password, jika telah mengetahui dengan tepat username yang digunakan, maka berarti telah melewati pengaman pertama dan mempermudah menebak pengaman berikutnya, yaitu password. Sebaliknya, hal tersebut akan lebih sulit dilakukan jika username tidak diketahui.
Jangankan halaman login untuk masuk sebagai administrator website tertentu, halaman login untuk e-mail saja disarankan tidak memberikan informasi yang dapat mengarahkan pada kesimpulan username atau password telah diisi benar. Contohnya, coba Anda login pada website Yahoo! Mail atau Google Gmail untuk membaca e-mail Anda, anggaplah Anda memiliki username “jokodoyanmie”, tetapi Anda salah mengetikkan password. Perhatikan bahwa Anda tidak mendapatkan pesan “Invalid password”, atau “Invalid username”, pesan yang Anda terima adalah “Invalid ID or Password” (pada Yahoo!), atau “Username and password do not match” (pada Google).
Pesan tersebut tidak menyebutkan secara tepat bagian mana yang salah ketik, apakah username (ID), atau password? “Wah... perusahaan sebesar Yahoo! dan Google tidak bisa membuatscript untuk mendeteksi apakah kesalahan terjadi pada username atau password?” Mungkin demikian pikir Anda dan tentu saja hal tersebut tidak mungkin, dengan kata lain Yahoo!,
Google, dan rata-rata e-mail provider lain umumnya memang sengaja menyamarkan informasi tersebut. Mungkin Anda berpikir hal tersebut bukan sesuatu yang krusial, tetapi kenyataannya kombinasi username dan password telah menjadi hal yang cukup serius, beberapa e-mail provider juga tidak mengizinkan Anda memilih password yang sama atau mengandung kata yang terdapat pada username.
Pencegahannya cukup mudah, tidak perlu membuat script untuk mencari kesalahan login terletak pada username atau password, juga hindari penggunaan username yang umum dan mudah ditebak seperti admin, sa, administrator, dan seterusnya.
Bahaya Input Komentar
Sebuah website biasanya mencoba untuk berinteraksi dengan pengunjung dengan jalan menyediakan fasilitas agar pengguna dapat mengisikan sesuatu, misalnya saja komentar, atau guest-book, atau yang lebih modern lagi, yaitu shoutbox. Sayangnya, jika website Anda dikunjungi oleh seseorang yang iseng, maka bisa jadi sebuah script jahat dapat turut menjadi “komentar” dan ini bukan berita baik bagi website Anda.
Ilustrasinya adalah sebagai berikut, Anda mengisikan guest-book katakanlah pada alamat http://domainsaya.com/guestbook.php dengan komentar berikut:
Website yang aman...
Perhatikan bahwa terdapat JavaScript pada komentar tersebut. Jika komentar tersebut dapat diterima dan dieksekusi oleh website, maka setiap kali ada pengunjung yang mengaksesnya, akan tampil sebuah pesan bertuliskan “tapi bohonggg...”.
Cukup mengganggu, bukan? Tidak hanya sampai di sana, jika sebuah website telah dapat disusupi dengan cara seperti ini, maka banyak sekali kemungkinan script berbahaya yang dapat ditanamkan.
Misalkan script untuk mengalihkan website domainsaya.com ke website lain, script untuk menampilkan gambar porno (yang dapat dilakukan dengan HTML biasa) atau script untuk mengambil informasi seperti cookie. Cukup berbahaya, bukan?
Langkah pencegahannya, antara lain dengan tidak langsung mengizinkan komentar yang masuk tampil pada browser Anda, harus melalui proses approve. Hal ini membutuhkan kerja seorang administrator yang bertugas melakukan filter komentar yang masuk dan berhak menolak komentar yang tidak diinginkan.
Walaupun tidak berarti semua website yang memberlakukan filter seperti ini berarti menyadari akan bahaya kebobolan melalui script injection ini. Karena bisa saja hal ini dilakukan dengan alasan menghindari penggunaan kata-kata tertentu.
Cara pencegahan yang lain adalah dengan menolak penulisan script atau tag HTML, dengan risiko tampilan komentar menjadi datar tanpa aksesoris karena tag-tag HTML untuk melakukan variasi huruf (bold, italic, dan lain-lain) tidak dapat digunakan.
Tetapi jika Anda membutuhkannya, Anda dapat membuat sen-diri aturan dan penulisan tag, misalnya [:bold] untuk membuat huruf menjadi bold, dan seterusnya. Tag buatan Anda tersebut akan disubsitusikan secara otomatis dengan tag HTML sehingga tampilannya sesuai seperti yang diinginkan. Beberapa engine forum telah menggunakan metode ini.
Cara lainnya adalah dengan melakukan encode script, contohnya mengganti karakter “<” dengan < dan karakter “>”dengan > sehingga kata
0 comments:
Posting Komentar