Cara Mengatasi SQL Injection

Tulisan ini adalah salah satu solusi dari post sebelumnya tentang konsep dasar sql injection.

Kali ini saya membahas tentang Cara Mengatasi SQL Injection di Codeigniter.

Meskipun CodeIgniter sudah menyediakan beberapa kemampuan untuk melakukan pengamanan tetapi tetap saja aman atau tidaknya suatu website lebih ditentukan oleh webmasternya.

CodeIgniter menyediakan batasan karakter apa saja yang bisa digunakan dalam pembuatan alamat URI yaitu berupa huruf dan angka atau jika menggunakan karakter lain hanya tilde (~ ), period (.), colon ( : ), underscore ( _) dan dash ( -) yang diperbolehkan. CodeIgniter juga tidak memperbolehkan penggunaan metode GET pada input form dan secara default semua input form menggunakan metode POST.

CodeIgniter (CI) tidak memperbolehkan penggunaan metode GET, namun default-nya menggunakan metode POST.

Saat sebuah controller di load maka CodeIgniter akan menghilangkan semua inputan yang menggunakan metode GET yang ditemukan,melakukan filter terhapap input dengan metode POST jika ditemukan, melakukan filter pada COOKIES jika ditemukan, menyediakan XSS filtering serta meyamakan karakter baris baru dengan \n.

Cross Scripting Hack adalah salah satu jenis cracking website dengan memasukan kode-kode jahat kedalam website kita. CodeIgniter memiliki fitur XSS filtering yang akan menyaring semua input kemungkinan adanya kode-kode jahat.

Fungsi untuk melakukan XSS filtering adalah :

$this->input->xss_clean();

Contoh penggunaanya :

$data_bersih = $this->input->xss_clean($data);

Perintah diatas akan menyaring variabel $data dengan XSS filtering dan menyimpan hasilnya kedalam variabel $data_bersih.
Jika ingin me-load XSS filtering secara otomatis setiap website dijalankan maka lakukan edit pada file system/application/config/config.php pada bagian :

$config['global_xss_filtering'] = FALSE;

Ganti kata FALSE dengan TRUE.

CodeIgniter datang dengan tiga fungsi helpers untuk bekerja dengan input metode POST, COOKIES dan SERVER. Kelebihan menggunakan fungsi yang disediakan oleh CodeIgniter daripada secara manual, misalnya dengan $_POST[‘var’] adalah fungsi tersebut secara default sudah melakukan cek apakah data masukan tersebut ada atau tidak. Sehingga kita tidak perlu membuat semacam logika pengecekan sendiri.

Misalnya saja, sebagai contoh, kita memiliki sebuah form dengan metode POST, didalam form terdapat field pengisian data dengan nama var. Secara manual pada saat input dimasukan maka saya biasa membuat logika kondisi dengan if untuk melakukan cek apakah variabel var ada atau tidak.

if ( ! isset($_POST['var'])) {
$something = FALSE;
} else {
$something = $_POST['var'];
}

Dengan fungsi yang sudah disediakan oleh CodeIgniter maka cukup dengan satu baris kode :

$this->input->post(‘var’);

Kode tersebut sudah mengerjakan apa yang kita butuhkan. Kita bahkan bisa melakukan XSS filtering secara langsung tanpa perlu menambah baris kode. Cukup beri nilai TRUE pada variabel kedua, sehingga baris kode tersebut menjadi :

$this->input->post(‘var’,TRUE);

Seperti yang sudah disebutkan sebelumnya, CodeIgniter juga menyediakan fungsi untuk mengambil COOKIES dan informasi dalam variabel SERVER. Untuk mengambil COOKIES kita bisa menggunakan :

$this->input->cookie(‘nama_cookie’);

Dan untuk mengambil variabel SERVER kita bisa menggunakan :

$this->input->server(‘var’);

Baik $this->input->cookie() dan $this->input->server() semuanya bisa menggunakan XSS filtering dengan cara yang sama dengan $this->input->post().

CodeIgniter juga memiliki fungsi untuk menampilkan ip address dari pengunjung, hal ini berfungsi jika kita ingin menyimpan data ip pengunjung yang mengunjungi website kita misalnya. Fungsi tersebut adalah :

$this->input->ip_address();

CodeIgniter juga memiliki fungsi untuk melakukan cek apakah alamat suatu ip valid atau tidak.

$this->input->valid_ip([alamat_ip]);

Untuk contoh penggunaan buat sebuah fungsi baru dengan nama cek_ip pada controller coba dengan isi sebagai berikut :

function cek_ip() {
$ip = '202.134.34.3';
if($this->input->valid_ip($ip)) {
echo "alamat ip ".$ip." adalah alamat ip yang valid";
} else {
echo "alamat ip ".$ip." adalah alamat ip yang tidak valid";
}

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s