Vol. 2, No. 2, Tahun 2013 203
Modul Pembelajaran Uji Keamanan Web Berbasis Php Dan Python Django Dengan Menggunakan Metode Sql Injection
Tika Hermawati, Rahmat Suhatman, Ibnu Surya
Jurnal Aksara Komputer Terapan
Politeknik Caltex Riau
Website : https://jurnal.pcr.ac.id/index.php/jakt/about
Email : [email protected]
Modul Pembelajaran Uji Keamanan Web Berbasis
PHP Dan Python Django Dengan Menggunakan
Metode Sql Injection
Tika Hermawati
1, Rahmat Suhatman
2, Ibnu Surya
31Program Studi Teknik Informatika, Politeknik Caltex Riau, email: [email protected] 2
Program Studi Teknik Informatika, Politeknik Caltex Riau, email: [email protected]
3
Program Studi Teknik Informatika, Politeknik Caltex Riau, email: [email protected] Abstrak
Pada era yang sudah maju sekarang banyak sekali segala jenis modul-modul pembelajaran yang dapat dimanfaatkan. Modul pembelajaran itu sendiri adalah suatu paket belajar mandiri atau alat atau sarana pembelajaran yang berisi materi, metode, batasan-batasan, dan cara mengevaluasi yang dirancang secara sistematis dan menarik untuk mencapai kompetensi yang diharapkan dan dapat digunakan secara mandiri. Modul pembelajaran ini dapat dimanfaatkan oleh semua orang yang ingin belajar tentang pengujian suatu websiteyang dibangun dengan menggunakan bahasa pemrograman PHP5untuk security on dan off serta Python Django.Untuk pengujian keamanannya dilakukan attacker yang memanfaatkan metode SQL Injection dengan Error Based SQL Injection, Union Based SQL Injection dan Blind SQL Injection.
Kata kunci: Blind SQL Injection. Error Based, PHP ,SQL Injection,Union Based SQL Injection
Abstract
In this era of advanced knowledge lots of all kinds of learning modules that can be utilized. Learning module itself is a self-study package or tool or means of learning containing materials, methods, limitations, and how to evaluate systematically designed and appealing to attain the expected competencies and can be used independently. This learning module can be used by everyone who wants to learn about testing a website is built using PHP5 programming language for security on and off as well as the Python Django. For safety testing done by attackers who exploit SQL Injection method with Error Based SQL Injection, Union Based SQL Injection and Blind SQL Injection.
Vol. 2, No. 2, Tahun 2013 204
Modul Pembelajaran Uji Keamanan Web Berbasis Php Dan Python Django Dengan Menggunakan Metode Sql Injection
Tika Hermawati, Rahmat Suhatman, Ibnu Surya
1. Pendahuluan
Website adalah kumpulan halaman yang menampilkan informasi data teks, data gambar diam atau gerak, dan masih banyak lainya baik yang bersifat statis maupun dinamis yang membentuk satu rangkaian bangunan yang saling terkait. Sebuah website dapat dibuat dengan banyak jenis bahasa pemrograman, akan tetapi pada era sekarang banyak yang membuat website dengan bahasa pemrograman PHP versi 5 dan Phyton Django.
Semua website yang dibuat belum tentu aman dari serangan para attacker, terutama pada era sekarang para attacker banyak menggunakan SQL Injection untuk mengeksploitasi website itu sendiri. Pengertian dari SQL injection itu sendiri adalah teknik mengeksploitasi sebuah website memakai data yang disisipkan dalam query SQL dengan cara memasukkan query SQL atau perintah (command) sebagai input yang dimungkinkan melalui halaman website tersebut. Disini para attacker menggunakan SQL Injection karena aksi SQL Injection ini tidak mengisyaratkan banyak hal, tidak perlu ping, menggunakan port tertentu dan tidak terpengaruh oleh firewall.
Atas permasalahan tersebut maka dibuat sebuah modul pembelajaran mengenai uji keamanan web berbasis PHP versi 5 dan Phyton Django dengan metode Sql Injection. Modul pembelajaran disini sangat berguna bagi semua orang yang ingin mempelajari tentang keamanan webite. Modul pembelajaran disini menggunakan bahasa pemrograman PHP versi 5 dan Phyton Django. Didalam modul pembelajaran ini berisi informasi dan cara mengamankan website yang dibuat dari para attacker terutama attacker yang menggunakan beberapa jenis dari Sql Injection, yaitu Error Based SQL Injection, Union Based SQL Injection dan Blind SQL Injection.
1.1 Perumusan Masalah
Berdasarkan latar belakang yang diuraikan diatas dapat dirumuskan
permasalahan proyek akhir ini yaitu bagaimana membuat modul pembelajaran dan bagaimana menguji keamanan web yang dibuat menggunakan dua bahasa pemrograman yaitu PHP versi 5 dan Phyton Django dari attacker yang menggunakan metode serangan Sql Injection yang menggunakan jenis-jenis yang ada yaitu jenis Error Based SQL Injection, Union Based SQL Injection dan Blind Based SQL Injection dengan memanfaatkan metode-metode didalamnya.
1.2 Tujuan dan Manfaat
Tujuan dari proyek akhir ini adalah : 1. Membuat modul pembelajaran
yang dapat dimanfaatkan oleh semua orang.
1. Menguji tingkat keamanan dari website PHP 5 security On dan Off serta Phyton Django.
2. Mengetahui bahasa pemrograman yang aman untuk digunakan. Proyek akhir ini diharapkan dapat bermanfaat untuk :
1. Memberikan pengetahuan terhadap semua orang melalui modul
pembelajaran yang berisi informasi bagaimana cara mengamankan website yang dibuat dari serangan attacker yang memanfaatkan SQL Injection.
2. Mengetahui bahasa pemrograman untuk membuat website agar aman dari serangan SQL Injection. 3. Mengetahui kekurangan dan
kelebihan atau celah yang banyak dimanfaatkan oleh attacker dari bahasa pemrograman yang dibuat.
2. Landasan Teori
2.1 Perbandingan Penelitian
Pada sebelumnya telah dilakukan penelitian oleh Meita Setiasih, Deborah Estefanus, dan Michael Andinata pada tahun 2012 mengenai “Perancangan Keamanan Halaman Web Berbasis Platform PHP Terhadap Serangan Sql Injection”, Binus university, jakarta, DKI jakarta, indonesia membahas tentang
Vol. 2, No. 2, Tahun 2013 205
Modul Pembelajaran Uji Keamanan Web Berbasis Php Dan Python Django Dengan Menggunakan Metode Sql Injection
Tika Hermawati, Rahmat Suhatman, Ibnu Surya metode SQL Injection,dapat di implementasi dengan baik dan memberikan keamanan bagi webberbasis PHP versi 5, sehingga memperkecil kemungkinan untuk ditembus oleh pihak luar yang tidak memiliki wewenang dalam mengambil alih hak akses web dengan metode SQL Injection.
Pada proyek akhir ini, dibuat suatu modul pembelajaran mengenai kemanan website berbasis PHP 5 dan Python Django dengan metode pengujiannya menggunakan metode SQL Injection dengan memanfaatkan Error Based SQL Injection Union Based SQL Injection dan Blind Based SQL Injection yang ada pada SQL Injection itu sendiri. Dengan metode SQL Injection memberikan pengetahuan kepada semua orang tentang bagaimana memberikan keamanan terhadap sebuah website dari serangan attacker.
Tabel 1 perbandingan penelitian terdahulu dan penelitian sekarang
Berdasarkan hasil analisis, perancangan, pengujian, implementasi, dan evaluasi, maka dapat diambil beberapa kesimpulan, yaitu:
1. Dapat melakukan pencegahan terhadap serangan SQL Injection pada web berbasis PHP versi 5 dengan database menggunakan MySql.
2. Penggunaan dan konfigurasi htaccess yang tersedia dari web hostingdalam mencegah terjadinya serangan SQL Injection.
3. Menutupi celah kelemahan PHP dalam segi coding pemrograman. 4. Penggunaan dan konfigurasi
php.ini pada web serverlokal. 2.2 Modul Pembelajaran
Modul merupakan salah satu bentuk bahan ajar yang dikemas secara utuh dan sistematis, didalamnya memuat seperangkat pengalaman belajar yang terencana dan didesain untuk membantu semua orang menguasai tujuan belajar yang spesifik. Adapun penjelasan mengenai
modul pembelajran itu sendiri adalah suatu alat atau sarana pembelajaran yang berisi materi, metode, batasan-batasan, dan cara mengevaluasi yang dirancang secara sistematis dan menarik untuk mencapai kompetensi yang diharapkan dan dapat digunakan secara mandiri.Modul disusun sesuai dengan kebutuhan belajar pada mata kuliah tertentu untuk keperluan proses pembelajaran tertentu, sebuah kompetensi atau sub kompetensi dikemas dalam satu modul secara utuh.
2.3 Protocol Hypertext (PHP)
PHP adalah bahasa pemrogaman web atau scripting language yang menyatu dengan HTML dan dijalankan pada server side. Artinya semua sintaks yang diberikan akan sepenuhnya dijalankan pada server sedangkan yang dikirim ke browser hanya hasilnya saja.
PHP 5 merupakan kelanjutan evolusi yang berjalan. Walaupun pada PHP 4 sudah banyak library yang ditambahkan, PHP 5 menawarkan peningkatan dari fungsionalitas dan penambahan beberapa fitur antara lain :
1. peningkatan dari kemampuan pemrograman berorientasi objek
2. Excetion handling, yang menstandarisasi logika atas pemberitahuan kesalahan pemrograman.
3. Peningkatan terhadap penanganan string.
4. Peningkatan dukungan terhadap XML dan Web Service yang menggunakan libxml2.
5. PHP versi 5 dapat membuat file swf dan applet java.
2.4 Register Global
Register Globals adalah adalah merupakan salah satu pengaturan yang berada di dalam file php.ini yang bertugas untuk mengatur apakah variabel-variabel EGCPS akan didaftarkan sebagai variabel global atau tidak. Dalam pengaturan defaultnya register globals adalah on tetapi ada juga di beberapa webserver seperti xampp defaultnya off. Berikut ini script
Vol. 2, No. 2, Tahun 2013 206
Modul Pembelajaran Uji Keamanan Web Berbasis Php Dan Python Django Dengan Menggunakan Metode Sql Injection
Tika Hermawati, Rahmat Suhatman, Ibnu Surya untuk mengetahui status register globals pada website yang telah dibuat:
<?php $reglob = ini_get('register_gl obals'); if($reglob == 1){ echo "register_globals ON"; } else { echo "register_globals OFF"; } ?>
tabel 2 Script Register Global
Jika register globals di set ON, maka akan muncul tulisan "register_globals ON", dan jika register global di set OFF, maka akan muncul tulisan “register_globals OFF”. Untuk mengaktifkan atau mematikannya, yaitu dengan menghilangkan tanda titik koma, berikut ini adalah contohnya :
Ketika register globals ON, maka register globals akan memasukkan variabel ke script yang telah dibuat (seperti pada permintaan melalui form html). Hal ini sesuai dengan fakta bahawa PHP tidak membutuhkan inisialisasi dari variable, dan itu berarti akan sangat mudah untuk menulis koding yang tidak terjamin keamanannya. Perbedaan dari register globals on dan off yaitu menyebutkan nama variabelnya yang berasal dari get, post, cookie, session, dan server secara langsung.
2.5 Python Django
Phyton Django awalnya ditulis oleh Adrian Holovaty dan Simon Willison didunia online. Namun sejak dirilis open source Django, perusahaan dan organisasi diseluruh dunia telah mengambilnya untuk digunakan dalam proyek- proyek besar maupun kecil. Phyton Django itu sendiri adalah bahasa pemrograman interpreter, karena Phyton Django dieksekusi dengan sebuah interpreter. Bahasa pemrograman Phyton Django juga merupakan bahasa pemrograman yang mudah dibaca dan terstruktur, hal ini karena digunakannya sistem identasi. Yaitu memisahkan blok-blok program susunan identasi. Didalam Phyton Django juga terdapat fasilitas pembuatan tipe data variabel secara dinamik dan struktur bahasa dari Phyton Django yang memudahkan programmer.
2.6 SQL Injection
SQL Injection merupakan teknik untuk mengeksploitasi sebuah aplikasi website yang memakai data yang diberikan atau disisipkan dalam query SQL. Cara kerjanya dengan memasukkan query SQL atau perintah (Command) sebagai input yang dimungkinkan melalui halaman website. Dengan demikian, SQL Injection dapat pula dikatakan sebagai suatu kegiatan yang menipu query dari database dengan memberikan suntikan atau menyisipkan kode SQL Injection kedalam kode yang asli.
Pada dasarnya ada tiga jenis SQL Injection, yaitu:
1. Error Based SQL Injection
Dalam aksinya akan memberikan sebuah perintah ke database sehingga menampilkan pesan error. Dari pesan error tersebut dapat diperoleh informasi yang bisa dimanfaatkan. Pada aksi Error Based SQL Injection dapat dikelompokkan menjadi dua metode yaitu GET method yang digunakan untuk memasukkan perintah SQL Injection melalui URL sebuah wesbite pada address bar, sehingga metode ini dikenal juga dengan URL Based SQL Injection. Yang kedua yaitu POST method, metode ini berasal dari variable yang ada pada form, cara untuk
Vol. 2, No. 2, Tahun 2013 207
Modul Pembelajaran Uji Keamanan Web Berbasis Php Dan Python Django Dengan Menggunakan Metode Sql Injection
Tika Hermawati, Rahmat Suhatman, Ibnu Surya mengidentifikasinya dengan memberikan karakter ‘ atau karakter ascii yang bisa menghasilkan error. 2. Union Based SQL Injection
Adalah suatu metode SQL Injection perintah UNION untuk menggabungkan hasil dari dua data atau lebih perintah SELECT menjadi hasil tunggal.
3. Blind SQL Injection
Jenis ini tidak menampilkan pesan error dan tidak menampilkan data atau informasi yang ada, terkadang sedikit sulit untuk melakukan eksploitasi untuk jenis Blind SQL Injection. Hal ini karena prosesnya dengan membrikan pertanyaan pada database berupa kondisi TRUE/FALSE dan apakahn ditampilkan benar atau tidak.
3. Metodologi Penelitian 3.1 Diagram Blok Diagram
Gambar 1 Diagram Blok Sistem
3.2 Skenario Pengguna Modul pembelajaran
Gambar 1 Skenario penggunaan
modul pembelajaran
Dari gambar diatas menjelaskan penggunaan dari modul pembelajaran
berupa CD berisikan file pdf yang berisi penjelasan mengenai PHP5 dan Phyton Django, langkah pengujian menggunakan SQL Injection, hasil pengujian, langkah mempatching SQL Injection, kesimpulan dan saran. Sehingga user dapat membaca, memahami serta mempraktekkannya. 3.3 Skenario Penyerangan dan
attacker
Gambar 1 Skenario Penyerangan Dari
Attacker
Dari gambar diatas menjelaskan penyerangan dari attacker. Dimana attacker disini sebagai penyerang dari website yang telah dibuat dengan menggunakan metode SQL Injection yaitu dengan memanfaatkan jenis-jenisnya, dengan menggunakan jenis dari Error Based SQL Injection, Union Based SQL Injeection dan Blind SQL Injection yang apabila security dari server website dalam kondisi On dan Off. Dan kemudian dengan memanfaatkan SQL Injection tersebut menyerang server dari website ke Database, setelah itu attacker pun dapat menguasai server dan merusak isi dari website tersebut dan menampilkan hasil dari serangan attacker.
3.4 Skenario
Vol. 2, No. 2, Tahun 2013 208
Modul Pembelajaran Uji Keamanan Web Berbasis Php Dan Python Django Dengan Menggunakan Metode Sql Injection
Tika Hermawati, Rahmat Suhatman, Ibnu Surya 4. Hasil dan Pembasan
Tabel 3 Hasil analisa pengujian SQL Injection terhadap web.
Dari keterangan tabel 3 diatas bahwa PHP 5 untuk security Off terdapat celah atau bugs yang dapat di manfaatkan oleh attacker untuk di inject dengan menggunakan SQL Injection. Dan pada PHP 5 untuk security On serta Python Django tidak memiliki celah atau bugs sehingga tidak dapat dimanfaatkan oleh attacker.
5. Kesimpulan dan Saran 5.1 Kesimpulan
Berdasarkan hasil dari pengujian dan analisa yang telah dilakukan pada Uji keamanan web dengan menggunakan SQL Injection maka didapatkan beberapa kesimpulan diantaranya:
1. Modul pembelajaran yang dibuat ini berdasarkan pengujian dapat bermanfaat bagi semua orang. 2. Berdasarkan hasil pengujian sql
injection terhadap website dari php 5 security on dan off serta python django dapatkan disimpulkan bahwa website php 5 security off lebih rentan diinject dibanding php 5 security on dan python django. 3. berdasarkan hasil pengujian
keamanan website dengan menggunakan sql injection maka bahasa pemrograman yang lebih bagus untuk digunakan adalah bahasa pmerograman php 5 security on dan pyhton django.
5.2 Saran
Beberapa saran untuk penelitian dan pengembangan uji coba keamanan website pada php 5 security ON dan OFF serta Python Django dengan menggunakan metode SQL Injection untuk selanjutnya yaitu:
1. Sebaiknya tidak hanya untuk website dari bahasa pemrograman PHP dan Python Django, akan tetapi lebih bervariasi sehingga lebih banyak pemahaman untuk dipraktekkan.
2. Website yang akan diuji sebaiknya sudah dihosting.
3. Tidak hanya menggunakan SQL Injection akan tetapi ditambah
dengan metode-metode
penyerangan yang lain.
Daftar Pustaka
[1] Abdul Kadir, 2003, “Dasar Pemrograman WEB Dinamis Menggunakan PHP” , YOgyakarta: ANDI.
[2] BM-100, "Hacking hiltonjakarta m
(SQL Injection)",.co24 juli 2005,
(http://www.jasakom.com).
[3] Budi Raharjo, "Keamanan Sistem
Informasi Berbasis Internet", PT
Insan Indonesia & PT INDOCISC. [4] Lukmanul Hakim, 2009, “Jalan
Pintas Menjadi Master PHP”,
Yogyakarta: LOKOMEDIA.
[5] McClure, Stuart; Saumil Shah.2003.
“Web Hacking, Serangan dan
pertahanannya” . Yogyakarta:
ANDI.
[6] Michele E. Davis and Jon A. Phillips, “Learning PHP & MySQL”
[7] Ridwan Sanjaya dan Onno W. Purbo, 2002, “Buku Pintar Internet
Membuat Aplikasi W@P dengan PHP”, Jakarta: PT.Elex Media
Komputindo.
[8] www.djangobook.com/en/2.0/”(also known as The Definitive Guide to Django: Web Development Done Right by Adrian Holovaty and Jacob Kaplan-Moss. Published by Apress)”.