PERBANDINGAN SISTEM KEAMANAN PENGEMBANGAN APLIKASI
WEBSITE WEB 2.0 DENGAN MENGGUNAKAN FRAMEWORK RUBY ON
RAILS DAN CAKEPHP
Naskah Publikasi
diajukan oleh
Sahid
06.11.1246
kepada
SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER
AMIKOM
YOGYAKARTA
2010
PERSEMBAHAN
Dengan menyebut nama Allah Yang Maha Pengasih dan Penyayang, serta dengan melantunkan sholawat serta salam kepada sang pencetus revolusioner muslim Nabi Muhammad SAW, Kupersembahkan karya kecil ini untuk : Ayahanda tercinta Daman Ibunda tercinta Sulasih Paman tersayang Legiman Kakak tersayang Sulastri, dan Danuri Adik tersayang Nila Wati dan Mat Rondi
ABSTRACT
Security of a website or web security systems is one of the main priorities for a web developer. But most web developers just design and prioritize what topics should be provided in order to attract visitors. And if a web developer to ignore the security of a website, then the aggrieved is a web developer itself because an attacker can retrieve important data on a website and also even be able to view the website of exploitation (deface).
Framework Ruby on Rails (RoR) is one solution to handle website security issues. A web developer can write a program using the RoR framework with minimal coding, to keep the size of a small fixed program code is able to accelerate production and reduce web application bugs that will make the source code of web developers easily understood, maintained, and improved. The success of this RoR framework, and then inspire the developers of PHP, which were created CakePHP framework.
In this thesis, the researcher tried to analyze and compare the two frameworks in terms of its security system. The results of this study can be a review of the web developer to join between the two frameworks adopt RoR and CakePHP.
1. Pendahuluan
Keamanan suatu website atau web security systems merupakan salah satu prioritas utama bagi seorang web developer. Tetapi kebanyakan web developer hanya mengutamakan design dan topik apa yang harus disediakan supaya menarik pengunjung. Padahal apabila seorang web developer mengabaikan keamanan suatu website, maka yang dirugikan adalah web developer itu sendiri karena seorang attacker dapat mengambil data-data penting pada suatu website dan bahkan pula dapat meng-ekploitasi tampilan website (deface) tersebut.
Framework Ruby on Rails (RoR) adalah salah satu solusi untuk meng-handle masalah keamanan website. Seorang web developer dapat menulis program menggunakan framework RoR dengan sedikit pengkodean, dengan menjaga ukuran kode program tetap kecil maka dapat mempercepat pembuatan aplikasi web dan memperkecil bugs yang akan membuat kode program para web developer mudah dipahami, dipelihara, dan ditingkatkan. Kesuksesan framework RoR ini kemudian menginspirasi para developer PHP, sehingga diciptakanlah framework CakePHP.
Pada skripsi ini, peneliti mencoba menganalisis kemudian mem-bandingkan kedua framework dari segi sistem keamanannya. Hasil penelitian ini dapat menjadi tinjauan para web developer untuk ikut mengadopsi diantara kedua framework RoR dan CakePHP.
2. Tinjauan Pustaka dan Landasan Teori 2.1 Tinjauan Pustaka
Penelitian yang dilakukan oleh Wafa Sofiah M ( 2009;02): berjudul perbandingan metodologi pengembangan aplikasi website web 2.0 dengan menggunakan framework Ruby on Rails dan CakePHP. Hasil penelitian memberikan kesimpulan bahwa setelah dilakukan penelitian dapat diambil kesimpulan sebagai berikut: 1). Dilakukan dua tahapan analisa untuk membandingkan framework RoR dan CakePHP pada penelitian ini, yaitu analisa berdasarkan studi literatur dan analisa proses (dengan cara membangun sebuah aplikasi website Web 2.0 untuk masing-masing framework). Tahapan analisa kedua dilakukan untuk memperkuat hasil dari analisa tahap pertama. 2). Kelebihan dan kekurangan dari masing–masing framework dapat dilihat dari hasil analisa tahapan pertama yang disesuaikan dengan hasil analisa tahapan kedua dengan melihat, apakah hasil dari tahapan kedua memperkuat hasil dari hasil analisa tahapan pertama. Parameter yang digunakan berdasarkan pada fitur-fitur umum yang harus ada pada sebuah framework.
Fitur Umum framework Hasil
Setup aplikasi CakePHP lebih mudah dalam melakukan setup aplikasi karena berbasis folder
Fitur security CakePHP unggul dalam hal dukungan internal framework security
Database RoR dan CakePHP sama-sama didukung oleh berbagai database engine. Terlebih lagi keduanya mempunyai fitur database migration. Tetapi RoR lebih unggul dalam hal assosiasi, karena tabel hasil join tidak perlu direpresentasikan oleh model, tetapi datanya tetap dapat diakses.
Sanitasi data Sanitasi data pada kedua framework sangat bagus karena adanya dukungan validasi data yang dipasang secara built-in
3). Tidak dapat ditarik kesimpulan secara garis besar alternatif framework terbaik diantara kedua framework ini. Hal ini dikarenakan kedua framework ini memiliki banyak kesamaan, tetapi untuk beberapa hal, keduanya saling mengungguli satu sama lain. Hasil ini pun juga sangat dipengaruhi oleh versi dari masing-masing framework yang digunakan. Sehingga, hasil dari analisis ini bukanlah sesuatu yang mutlak dan tidak dapat dirubah.
Penelitian framework yang dilakukan oleh Wafa Sofiah .M cukup menarik dalam konteks telah mengungkapkan penelitian baru yang mengkaji pengembangan aplikasi website web 2.0. Tetapi, pada penelitian tersebut masih terdapat kekurangan-kekurangan, salah satunya hasil penelitian dirasakan belum mendetail untuk setiap analisis proses. Sehingga, penelitian ini diadakan untuk mengkaji ulang lebih dalam mengenai perbedaan sistem keamanan pengembangan aplikasi website web 2.0 antara framework RoR dan CakePHP.
2.2 Landasan Teori 2.2.1 Framework
Framework merupakan tool untuk membangun sebuah website. Di dunia website, framework adalah tool yang menyediakan bahan-bahan yang dibutuhkan developer untuk membangun sebuah situs (Yodi A., 2009).
Menurut Endy M. (2006;08): Framework, sesuai dengan terjemahannya, adalah kerangka kerja. Jadi, di dalam framework ada beberapa kode program
yang kalau kita gunakan, akan memberikan kerangka atau struktur ke aplikasi yang dihasilkan.
3. Cara Penelitian 3.1 Alat Penelitian
Alat- alat yang dipakai pada penelitian ini terdiri dari perangkat keras dan perangkat lunak, yaitu :
3.1.1 Perangkat Keras
Perangkat keras menggunakan PC dengan spesifikasi sebagai berikut: 1. Processor AMD Athlon 64 3000 + 1.8 GHZ
2. Memory RAM 1G 3. Hard disk 80 Gb 4. Optical Disk DVD/RW
5. Monitor CRT dengan resolusi 1024 x 768 pixel 6. Modem ZTE dan kartu M2
3.1.2 Perangkat Lunak
Perangkat lunak yang digunakan untuk penelitian ini adalah sebagai berikut: 1. Sistem operasi Windows SP 2
2. Untuk aplikasi Ruby on Rails (RoR) menggunakan perangkat lunak: ruby186-26.exe, Gems library rails seperti activesupport-2.3.4, activerecord-2.3.4, rack-1.0.0.gem, actionpack-2.3.4.gem, actionmailer-2.3.4.gem, activeresource-2.3.4.gem, rake-0.8.7.gem, rails-2.3.4.gem.
3. Untuk aplikasi CakePHP menggunakan perangkat lunak: cake_1.2.5 4. Untuk web servernya menggunakan software
xampp-win32-1.6.8-installer.exe
5. Browser yang digunakan: Firefox_Setup_3.0.11.exe dan Opera_9.24_International_Setup.exe
3.2 Jalan Penelitian
Penelitian ini dilakukan dalam beberapa tahap yaitu: 3.2.1 Tahap Persiapan dan Pembuatan Aplikasi
Tahap persiapan akan mempelajari latar belakang masalah, rumusan masalah dan melakukan pengumpulan data serta pengetahuan yang terkait. Sehingga pada tahap ini akan dilakukan perancangan aplikasi. Perancangan aplikasi ini sifatnya hanya sebagai
pendukung dari analisis literatur yang telah dilakukan. Karena sifatnya sebagai pendukung, maka pembuatan aplikasi ini akan meneruskan aplikasi yang sudah dibuat oleh Wafa Sofiah (Perbandingan Metodelogi Pengembangan Aplikasi Website WEB 2.0 dengan Menggunakan Framework Ruby on Rails dan CakePHP,2009) pada penelitian sebelumnya. Nama aplikasi tersebut adalah Aplikasi Toko Buku Online. Karena pembuatan aplikasi toko buku online pada penelitian terdahulu menggunakan versi yang lama (Rails-1.2.3 pada framework RoR dan Cake_1.2.0.7692-rc3 pada framework CakePHP) maka pada penelitian ini akan mengupdate aplikasi tersebut pada versi terbaru ( Rails-2.3.4 dan Cake_1.2.5 ) dengan tujuan untuk mengurangi bugs pada sistem keamanan framework RoR dan CakePHP. Setelah proses pengupdetan aplikasi berhasil, dilanjutkan proses penambahan form comment yang nantinya berfungsi sebagai tempat pengujian. Segala sesuatu yang terkait dengan pembangunan aplikasi, seperti perancangan database, tidak akan dibahas pada laporan ini.
3.2.2 Tahap Implementasi
Berdasarkan tahap persiapan dan pembuatan aplikasi diatas, pembangunan aplikasi toko buku online yang dibuat dengan framework Ruby on Rails dijalankan di localhost dan Local Area Network (LAN) karena sedikitnya literatur yang membahas pempostingan aplikasi RoR serta keterbatasan waktu mengerjakan penelitian, sehingga aplikasi RoR belum bisa di publikasikan di internet. Aplikasi web yang dibuat dengan framework CakePHP akan dijalankan di localhost dan di publikasikan di internet.
4. Hasil Penelitian Dan Pembahasan
Keamanan merupakan salah satu prioritas utama untuk dipertimbangkan dalam pembangunan website. Sistem yang aman dapat memberikan tingkat kepercayaan yang tinggi kepada pengguna sehingga bisa memberi nilai tambah dan daya guna bagi sistem itu sendiri. Namun dalam pelaksanaanya keamanan masih sering diabaikan, memprioritaskan pembuatan web yang menarik bagi pengunjung lebih utama dibanding memprioritaskan keamanan web. Sedangkan kemanan data yang buruk dapat mengakibatkan ketidak percayaan pengunjung terhadap isi website. Keamanan website yang kurang baik dapat menyebabkan banyak masalah seperti, pencurian data, penghapusan data, pencurian password E-mail atau Web server.
4.1
SQL InjectionSQL injection merupakan serangan dengan memanfaatkan cacat programming pada aplikasi website untuk mengeksploitasi database server. SQL injection biasanya dilakukan ketika memasukkan input melalui form dengan perintah
atau kode tertentu. Pihak tidak bertanggung jawab bisa menginputkan meta karakter pada inputan form tersebut kemudian dieksekusi oleh website dan dikirim ke database. Database server memproses meta karakter tersebut sebagai query yang wajar. Proses SQL injection biasanya memanfaatkan meta karakter dan logika sql sehingga pihak tidak bertanggung jawab bisa memodifikasi query sql.
Dari hasil penelitian, framework Ruby on Rails dan CakePHP sudah memprotek serangan SQL injection dengan beberapa metode sesuai dengan system keamanan masing-masing :
Table 4.1: Tabel hasil analisis perbandingan SQL injection berdasarkan studi literatur
Framework
Ruby on Rails CakePHP
RoR memprotek serangan SQL injection dengan secara otomatis memfilter karakter khusus sql seperti tanda petik satu(‘), petik dua (“), karakter NULL dan line break (-). Tetapi terkadang juga harus diterapkan secara manual pada setiap penggalan (fragment) SQL, terutama dalam kondisi string (:conditions =>”…”), connection.execute() atau fungsi find_by_sql(). Tidak dianjurkan untuk menambahkan string (string1 + string2), atau pada mekanisme konvensional Ruby untuk menggantikan string (#{….}) (Heiko Webers,2008).
Dan juga Hindari mekanisme generate SQL berbasis user-contorller variables (Hendrayana, 2007)
CakePHP sudah memprotek serangan SQL injection dengan menggunakan Sanitize class, Sanitize menyediakan empat metode untuk menerapkan berbagai tingkat keamanan data (Duane O’Brien ,2009)
1. The sanitize paranoid method 2. The sanitize escape method 3. The sanitize html method 4. The sanitize clean method
4.2
Cross Site ScriptingCross 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 masukan
tersebut. Hal ini memungkinkan halaman yang dihasilkan menyertakan perintah yang sebenarnya tidak diperbolehkan.
Framework Ruby on Rails dan CakePHP dapat meng-hendle serangan tersebut, sehingga dapat mengurangi dan memudahkan web developer dalam memperhatikan security hole yang ada. Dalam mengantisipasi serangan cross site scripting masing-masing framework Ruby on Rails dan CakePHP mempunya teknik tersendiri.
Table 4.2: Tabel hasil analisis perbandingan XSS berdasarkan studi literatur Framework
Ruby on Rails CakePHP
Untuk penanggulangan serangan cross site scripting, Ruby on Rails menyediakan beberapa alternatif (Heiko Webers,2008) :
1. Menggunakan Rails sanitize() helper
2. Gunakan escapeHTML() 3. Gunakan plugin SafeErb
CakePHP mengatasi serangan cross site scripting dengan menggunakan Sanitize library (Anonim, 2007) :
1. clean($data, $connection =’default’)
2. escape($data, $connection =’default’ )
3. formatColumns(&$model) 4. html($string, $remove = false) 5. paranoid($string, $allowed =
array())
6. The strip methods 1. stripImages($string) 2. stripScripts($sting) 3. stripWhitespace($string) 4. stripTags($string) 5. stripAll ($string)
4.3
Cross Site Request ForgeryCross-site request forgery, dikenal juga dengan one click attack atau session riding disingkat dengan CSRF atau XSRF, merupakan bentuk eksploitasi website. Cross site request forgery menipu Website melalui request dari user yang dipercaya. Serangan bekerja melalui link atau script pada halaman site yang diakses user. Link tersebut dapat berupa gambar yang terhubung ke website tertentu. Jika website
menyimpan informasi otentikasi dalam sebuah cookie yang belum expire, maka dengan melakukan klik ke link tersebut akan menyebabkan website diakses menggunakan cookie user yang melakukan klik. Dengan kata lain, penyerang menipu browser user untuk mengirimkan HTTP requests ke website target (Berlianti,2006).
Berdasarkan hasil penelitian, framework Ruby on Rails dan CakePHP
memprotek serangan cross site request forgery dengan beberapa metode
diantaranya :
Table 4.3: Tabel hasil analisis perbandingan CSRF berdasarkan studi literature Framework
Ruby on Rails CakePHP
Dari hasil analisa yang dilakukan untuk mengatasi masalah kelemahan CSRF pada website yang dibangun dengan RoR dapat diatasi dengan (Heiko Webers,2008) :
1. Seperti yang diwajibkan oleh W3C, gunakan GET & POST 2. Permintaan security token
non-GET pada sisi server ( protect_from_forgery :secret => "12345678901234567890123456 7890..." ).
Untuk memprotek serangan cross site request forgery, cakePHP menyediakan SecureAction component yang dapat di taruh dalam controller(s) : var $components = array('SecureAction'); (Julien Perez, 2008). Bisa juga dengan menambahkan security component ke array $components array dalam controller(s): public $components = array('Security'); (dhofstet, 2009).
4.4
AuthenticationGuna mencegah pihak yang tidak berhak memakai account user yang sah untuk akses kehalaman website, maka dalam website perlu untuk menerapkan sistem otentikasi yang tepat. Dalam menerapkan prinsip otentikasi pada web, sistem yang biasanya digunakan adalah login system. Otentikasi merupakan suatu bentuk komunikasi antara Web browser dan Web server. Web Browser berada pada sisi client (user) dan Web server terdapat pada sisi website. Kebanyakan website menyediakan “account” untuk usernya agar dapat melakukan akses, kontrol atau perubahan pada service yang disediakan web-site. Untuk itu user perlu login
sebelum memasuki halaman tertentu. Permintaan login biasanya terdiri dari username dan password. User yang valid akan diizinkan untuk akses ke suatu halaman atau fungsi tertentu yang dimintanya (Berlianti, 2006).
Otentikasi yang tepat diperlukan pada website untuk mengamankan data, mencegah pencurian identitas dan sebagainya. Berdasarkan hasil penelitian, framework Ruby on Rails dan CakePHP menyediakan system otentikasi untuk melindungi data pada aplikasi website.
Table 4.4: Tabel hasil analisis perbandingan authentication berdasarkan studi literature
Framework
Ruby on Rails CakePHP
Ada beberapa plug-in otorisasi dan otentikasi yang tersedia pada RoR. Namun plug-in yang baik adalah plug-in yang menyimpan sandi terenkripsi seperti plug-in yang paling populer yaitu restful_authentication (Heiko Webers,2008) :
Ada sembilan ribu cara untuk melakukan
authentication, namun
Acts_as_authentication adalah pendekatan yang paling masuk akal (Hendrayana, 2007)
Sistem User Authentication adalah bagian dari common pada banyak aplikasi web. Dalam CakePHP ada beberapa system untuk otentikasi user, masing-masing memberikan pilihan yang berbeda. Pada intinya komponen otentikasi akan mengecek seorang user yang memiliki account pada website, kemudian user akan diberikan hak untuk mengakses website tersebut. CakePHP AuthComponent dapat digunakan untuk menciptakan system ini dengan mudah dan cepat (Anonim, 2010 ).
Pengujian framework Ruby on Rails dan CakePHP yang sudah dilakukan, pengujian dilakukan pada kondisi default dimana kedua framework diuji setelah dibangun aplikasi, sebelum kedua framework ditambahkan library atau plugin. Hasil pengujian menyatakan bahwa kedua framework vulnerable terhadap ancaman system keamanan. Untuk mengatasi ancaman pada system keamanan framework RoR dan CakePHP menyediakan modul-modul yang siap digunakan.
5. Kesimpulan
Setelah dilakukan penelitian dapat diambil kesimpulan sebagai berikut :
1. Dua tahapan analisa yang digunakan untuk membandingkan framework RoR dan CakePHP pada penelitian ini, yaitu analisa berdasarkan studi literature dan analisa berdasarkan aplikasi yang dibuat. Tahapan analisa berdasarkan aplikasi yang dibuat dilakukan untuk memperkuat hasil dari analisa studi literatur.
2. Kelebihan dan kekurang dari masing-masing framework dapat dilihat dari hasil analisa studi literature yang disesuaikan dengan analisa aplikasi, hasil dari analisis aplikasi yang dibuat memperkuat hasil dari hasil analisa literatur. Parameter yang digunakan berdasarkan fitur-fitur umum keamanan yang harus ada pada sebuah framework
Fitur Umum Keamanan
framework Hasil
Validasi data Dukungan validasi data pada kedua framework sangat bagus, karena validasi data dipasang secara built-in
Enkripsi data RoR dan CakePHP sama-sama
didukung component enkripsi data, namun RoR lebih unggul karena dukungan plugin sehingga penggunaannya lebih mudah. Dukungan faktor internal Dukungan library yang lebih banyak
misalnya library untuk pencegahan SQL injection, XSS, XSRF dan Authentication dengan sanitize library, SecureAction component, dan authComponent membuat CakePHP lebih unggul dalam dukungan internal.
Dukungan faktor eksternal Banyaknya dukungan plugin misalnya untuk pencegahan XSS, dan authentication dengan plugin SafeErb, dan restful_authentication membuat Ruby on Rails lebih unggul dalam dukungan eksternal.
3. Ancaman yang dapat menyerang sistem keamanan pada kedua framework adalah serangan SQL injection, Cross Site Scripting (XSS), Cross Site Request Forgery (CSRF) dan authentication.
4. Solusi untuk menghadapi ancaman pada sistem keamanan framework RoR dan CakePHP dapat dilihat dilihat dari hasil analisa studi literature.
5. Tidak bisa ditarik kesimpulan secara garis besar alternatif framework terbaik diantara kedua framework ini. Hal ini dikarenakan kedua framework memiliki banyak solusi untuk mengatasi ancaman keamanan. Hasil ini pun dipengaruhi oleh developer dalam merancang aplikasinya serta versi dari masing-masing framework yang digunakan. Sehingga, hasil dari analisis ini bukanlah sesuatu yang mutlak dan tidak dapat dirubah.
DAFTAR PUSTAKA
Aditya, Y.,2009, Open Source Framework, Bisnis Serius di Ranah Web 2.0 Dalam
Pandangan Teknis Dan Bisnis,
http://yodi.web.id/content/open_source_framework_bisnis_serius_di_ranah_ web_20_dalam_pandangan_teknis_dan_bisnis , diakses pada tanggal 2 September 2009 (22:15).
Anonim, 2007, XSS prevention and general sanitization, http://myeasyscripts.com /loudbaking/xss-prevention-and-general-sanitization/, diakses pada tanggal 1 Januari 2010 (05:23).
Anonim, 2008, Celah Yang Ter-acuhkan, http://www.noee.co.cc/2008/07/celah-yang-ter-acuhkan.html, diakses pada tanggal 25 Oktober 2009 (21:38).
Anonim, 2009, Cross Site Request Forgery (XSRF), http://www.ittelkom.ac.id/ library/index.php?view=article&catid=6%3Ainternet&id=593%3Across-site-request-forgery--xsrf-&option=com_content&Itemid=15, diak- ses pada tanggal 3 September 2009 (01:52).
Anonim, 2010, 5.2 Authentication, http://book.cakephp.org/view/172/ Authentication, diakses pada tanggal 28 Januari 2010 (09:58).
Berlianti, 2006, Pengaturan Otentikasi dan Session Pada Web, Sekolah Teknik Elektro Dan Informatika Institut Teknologi Bandung
Dhofstet, 2009, CakePHP and CSRF, http://stackoverflow.com/ questions/1584420/cakephp-and-csrf/1584464#1584464, diakses pada tanggal 7 Januari 2010 (21:09).
Figiel, A., 2008, Introduction to Ruby on Rails, Blog.agnessa.eu, diakses pada tanggal 18 Juli 2008 (14:21).
Galih, 2008, Celah keamanan web pemerintah klaten, http://dreamwork.web.id/ detail/celah-keamanan-web-pemerintah-klaten, diakses pada tanggal 25 Oktober 2009 (21:07).
Hendrayana. 2007. Study Keamanan Ruby on Rails (RoR). Sekolah Teknik Elektro Dan Informatika Institut Teknologi Bandung.
Muchtar, S., W., 2009, Perbandingan Metodelogi Pengembangan Aplikasi Website Web 2.0 Dengan Menggunakan Framework Ruby on Rails Dan CakePHP. Yogyakarta : Jurusan Teknik Informatika STMIK AMIKOM Yogyakarta Muhardin, E., 2006, Intro Framework, http://endy.artivisi.com/blog/java/intro-framework/,
diakses pada tanggal 27 Januari 2010 (05.36).
O’Brien, D., 2009, Cook up Web Sites Fast with CakePHP, Part 3: Use Sanitize for your Protection, IBM Corporation. Diakses pada tanggal 1 Desember 2009 (23:27).
Perez, J., 2008, Protect your website against CSRF attacks, http://bakery.cakephp.org/articles/view/protect-your-website-against-csrf-attacks, diakses pada tanggal 28 Januari 2010 (09:27).
Rajshekhar, A.P., 2008, Building Dynamic Web 2.0 Websites with Ruby on Rails. Packt publishing, Brimingham-Mumbai.
Tambun, R., U., 2004, Cross Site Scripting, Departemen Teknik Elektro Fakultas Teknologi Industri Institut Teknologi Bandung.
Webers, H., 2008, Ruby on Rails Security Guides, http://guides.rubyonrails.org/ security.html, diakses pada tanggal 14 Desember 2009 (23:24).
Yodi, 2008, Framework CakePHP dan peluang bisnis yang mengikutinya (updated! ), http://yodi.web.id/content/framework_cakephp_dan_peluang_
bisnis_yang_mengikutinya_updated, diakses pada tanggal 27 Januari 2009 (18:02).