Kenapa tidak benar? karena kalo teliti secara seksama, bagaimana mungkin seorang programmer atau developer yang membuat sebuah framework tidak memikirkan tentang keamanan framework itu sendiri? Pasti orang yang membuat framework CI sudah mengetahui hal - hal ini. Itu terbukti di dalam config atau konfigurasi default CI terdapat fitur untuk memproteksi serangan CSRF.
Kalo seperti itu,lalu bagaimana jika ada suatu website yang menggunakan framework CI tetapi tetap saja terdapat celah SQLI?
Hal seperti itu bisa terjadi disebabkan karena kesalahan orang yang mendevelop website tersebut dengan tidak mengikuti aturan yang di rekomendasikan oleh CI, bukan disebabkan oleh framework CI-nya.
Lalu dimana letak kesalahannya?
Letak kesalahannya yaitu terdapat pada bagaimana developer web tersebut menuliskan syntax - syntax program yang tidak sesuai dengan yang telah di anjurkan oleh CI.
Contohnya :
1 kasus web berbasis framework CI yang sering terjadi celah SQL Injection. Pada fitur "pencarian kata/berita".
Basis Code | : Framework CodeIgniter |
Server | : Apache (XAMPP) |
Web berbasis CI sesuai yang mengikuti aturan
Kondisi dimana seorang developer web yang membuat web berbasis framework CI dengan aturan yang benar. Jika ingin mengetahui lebih jelas bagaimana struktur atau aturan yang benar dalam mem-build suatu website berbasis framework CI dapat di baca pada link https://www.codeigniter.com/user_guide/.
Oke langsung saja, sekarang kita akan coba kondisi per kondisi. Untuk mengetahui apakah benar framework CI yang mem-build struktur sesuai aturan bisa terdapat celah SQLI juga?
1. Inputan kolom kata kunci normal (a-z;A-z;0-9)
Kondisi dimana inputan didalam kolom pencarian tidak di sisipin karakter karakter unik selain huruf dan angka,maka ketika kita search akan menghasilkan pencarian yang sesuai.
normal dan tidak terdapat error
2. Inputan kolom kata kunci dengan menyisipkan karakter unik (';";$;%;dll)Sekarang kita akan coba untuk menyisipkan jenis karakter yang dapat menyebabkan terjadinya error SQL Injection yaitu sebuah karakter ( ' ). Contoh : judul'
Ternyata setelah kita coba inputkan dengan kata kunci (judul') pencarian yang dihasilkan tidak dapat menemukan kata kunci yang diinginkan akan tetapi kondisi web tetap normal dan tidak terdapat error.
normal dan tidak terdapat error
Berarti jika kita membuat/mem-build framework CI dengan struktur yang sesuai maka bug SQLI akan sangat kecil terjadi dalam sebuah inputan search,form,atau apapun yang bersifat inputan.
Kondisi web berbasis CI tidak sesuai aturan CI
Ini yang akan kita bahas tentang web berbasis framework CI tidak mengikuti aturan yang sudah di tentukan,oke coba kita lihat dimanakah perbedaannya
1. Inputan kolom kata kunci normal (a-z;A-z;0-9)
Kita coba menginputkan dalam kondisi normal tanpa inputan karakter unik sama seperti percobaan sebelumnya. Ternyata hasil sama masih normal.
2. Inputan kolom kata kunci dengan menyisipkan karakter unik (';";$;%;dll)
Tapi bagaimana dengan karakter unik? langsung aja kita coba dengan kata kunci (judul') sama seperti kata kunci sebelumnya.
Kita lihat apa yang terjadi setelah kita cari?
Ya setelah kita menekan tombol cari maka kita dapati adalah suatu error. Apa ini yang di maksud bug SQLI? ya disini saya katakan inilah kondisi dimana website berbasis framework CI terdapat celah SQL Injection.
Lalu bagaimana bug tersebut bisa terjadi? Apa bisa di jelaskan?
Untuk mengetahui bagaimana bug tersebut bisa terjadi dan apa perbedaannya yang mengikuti aturan atau tidak, akan kita bahas dibawah ini.
Biasanya letak kesalahannya itu terdapat pada bagian models CI.
Berikut adalah code pada models pencarian CI mengikuti struktur atau aturan :
Gambar 1
Berikut adalah code pada models pencarian tidak mengikuti struktur atau aturan :
Gambar 2
Dimana perbedaannya? perbedaannya hanyalah pada bagaimana penulisan query models pencarian tersebut dibuat, pada Gambar 1 dalam membuat querynya mengikuti apa yang di rekomendasi oleh CI tetapi pada Gambar 2 tidak mengikuti yang direkomendasikan CI melainkan masih menggunakan query native. Struktur query seperti ini biasanya sering didapati pada saat membuat web dengan basis native. Penggunaan code query seperti tersebut sangat rentan terjadinya SQL Injection dan untuk menghindarinya kita harus banyak menfilter input inputan yang ada sebelum mysql mengeksekusi query kita,jika ingin lebih jelas bagaimana menangkal SQL Injection pada web basis native,bisa baca pada artikel MENCEGAH TERJADINYA SQL INJECTION PADA WEB APPLICATION (WEBSITE).
Maka dari itu,jika kita ingin mem-build/membuat web basis framework CI sebaiknya kita mengikuti struktur atau aturan yang sudah di buatkan oleh developer CI.
Oke mungkin hanya sampai disini tulisan singkat ini,jika ada pertanyaan maupun saran silahkan berkomentar.
Jika ingin download source yang terdapat diatas bisa download dibawah ini :
Note : sesuaikan user, passsword dan nama db yang digunakan pada setingan mysql anda. Untuk konfigurasi database pada CI untuk mengubahnya terdapat pada path application/config/database.php
8 Komentar
dor
BalasHapusBoom
HapusTerimakasih infonya
BalasHapusSama sama bro
HapusThanks buat kunjungannya
bang ane udah coba..
BalasHapustapi kok pass di pencarian error ya..
notfound gitu.. yang yg salah.?
Coba periksa link urlnya pastikan mengaksesnya sudah benar http://localhost/ci_search_vuln/index.php/home
HapusThanks
mantapp
BalasHapusSangat membantu. lanjutkan aa
BalasHapus