Rumahweb Journal
banner - cara meningkatkan keamanan website codeigniter

Cara Meningkatkan Keamanan Website CodeIgniter

Keamanan website menjadi aspek penting untuk melindungi dari ancaman seperti hacker, malware, hingga phishing. Tujuannya adalah menjaga privasi data pengunjung serta memastikan website tetap berfungsi dengan baik. Dalam artikel ini, kami akan membahas cara meningkatkan keamanan website CodeIgniter secara lengkap.

Apa itu CodeIgniter?

CodeIgniter adalah framework dengan arsitektur MVC (Model, View, dan Controller) yang digunakan untuk membuat atau mengembangkan website dinamis dengan basis PHP. Dengan konsep MVC, maka tampilan, data, dan logic akan dipisahkan. Ini merupakan konsep umum yang ada di dalam framework.

Selain itu, dengan konsep MVC akan memberikan kenyamanan saat harus bekerja dalam tim. Karena developer backend bisa cukup fokus pada bagian logic, sedangkan developer frontline, hanya fokus di bagian tampilan.

Selengkapnya tentang apa itu CodeIgniter bisa Anda pelajari pada artikel berikut: Apa itu CodeIgniter

Cara Meningkatkan Keamanan Website CodeIgniter

CodeIgniter memiliki beberapa fungsi keamanan yang bisa Anda aktifkan, untuk meningkatkan keamanan pada website dari serangan hacker, malware hingga phishing. Berikut adalah cara meningkatkan keamanan website CodeIgniter yang dapat Anda lakukan.

1. Mengaktifkan Proteksi CSRF

CodeIgniter menyediakan fitur proteksi CSRF yang dapat digunakan untuk melindungi aplikasi web dari serangan CSRF. CSRF adalah singkatan dari Cross-site Request Forgery, yaitu jenis serangan pada aplikasi web dimana penyerang memaksa pengguna yang sudah terautentikasi untuk melakukan tindakan yang tidak diinginkan.

Pindah Hosting ke Rumahweb Gratis

Bayangkan seperti ini: Anda sedang login ke akun bank Anda, lalu secara tidak sengaja mengklik sebuah tautan yang tersembunyi di sebuah email. Tautan ini, tanpa sepengetahuan Anda, bisa saja mengirimkan perintah ke bank Anda untuk mentransfer uang ke rekening orang lain. Ini adalah contoh sederhana dari serangan CSRF.

Untuk mengaktifkan CSRF Protection di Codeigniter kita perlu mengubah pengaturan di file /application/config/config.php

$config['csrf_protection'] = TRUE;    // SET TRUE UNTUK ENABLE CSRF PROTECTION
$config['csrf_token_name'] = 'csrf_test_name';        // NAMA CSRF TOKEN YANG AKAN DIGUNAKAN
$config['csrf_cookie_name'] = 'csrf_cookie_name';    // NAMA CSRF COOKIE YANG AKAN DIGUNAKAN
$config['csrf_expire'] = 7200;        // JANGKA WAKTU CSRF TOKEN EXPIRED (DALAM DETIK)
$config['csrf_regenerate'] = TRUE;    // JIKA TRUE MAKA CSRF TOKEN AKAN DI GENERATE ULANG UNTUK SETIAP REQUEST
$config['csrf_exclude_uris'] = array();    // ARRAY BERISI LIST URI YANG TIDAK MENGGUNAKAN CSRF PROTECTION

Kemudian, tambahkan form token pada form di view. Dengan menambahkan pengaturan diatas, CodeIgniter akan otomatis menambahkan token CSRF pada setiap form dan memverifikasi token pada setiap request.

2. Upgrade Codeigniter dan library-nya secara teratur

Lakukan upgrade versi Codeigniter beserta library yang Anda gunakan secara teratur, untuk memastikan keamanan script serta mendapatkan fitur baru yang dapat Anda gunakan. Dengan demikian, script CodeIgniter Anda akan lebih aman dari potensi peretasan.

3. Menggunakan Filter XSS

Cross-Site Scripting (XSS) adalah serangan di mana penyerang menyisipkan skrip berbahaya ke dalam halaman yang dijalankan di browser pengguna. CodeIgniter menyediakan filter XSS yang bisa diaktifkan saat menerima input dari pengguna.

Berikut contoh filter XSS pada form input:

$data = $this->input->post('input_name', TRUE); // TRUE akan memfilter XSS

4. Mencegah SQL Injection

CodeIgniter sudah menyediakan Query Builder yang secara otomatis melindungi aplikasi Anda dari SQL Injection. Selalu gunakan query builder atau prepared statements daripada menulis query SQL langsung.

Contoh penggunaan Query Builder:

$this->db->where('username', $username);
$this->db->where('password', $password);
$query = $this->db->get('users');

5. Mengaktifkan SSL

Cara ke lima untuk meningkatkan keamanan website CodeIgniter adalah mengaktifkan SSL atau HTTPS. Dengan HTTPS data antara server dan klien di enkripsi sehingga terhindar dari penyadapan dan manipulasi oleh pihak ketiga.

Pada Cogeigniter, konfigurasi HTTPS dilakukan melalui file application/config/config.php, dengan menambahkan atau mengubah base_url menggunakan https.

$config['base_url'] = 'https://yourdomain.com';

Atau melalui .htaccess untuk memaksa mengalihkan ke HTTPS

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Selengkapnya tentang HTTPS pada CodeIgniter bisa Anda pelajari di artikel berikut: Cara Setting HTTPS CodeIgniter

6. Menggunakan Session yang aman

Pastikan session yang digunakan pada aplikasi Anda aman. Beberapa langkah untuk mengamankan session:

Gunakan session yang terenkripsi. Atur pengaturan session di config.php untuk memperkuat pengamanan:

$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200; // 2 jam
$config['sess_save_path'] = sys_get_temp_dir();
$config['sess_match_ip'] = TRUE;
$config['sess_time_to_update'] = 300; // 5 menit

7. Proteksi dari File Upload

Jika website menyediakan fitur bagi pengguna untuk mengunggah file, pastikan membatasi jenis file yang dapat diunggah dan ukuran file yang diizinkan. Pastikan juga file yang diunggah tidak dapat dieksekusi.

Contoh konfigurasi untuk membatasi jenis file yang dapat diunggah:

$config['allowed_types'] = 'jpg|jpeg|png';

Pada contoh diatas kita hanya membatasi extension file yang bisa diupload hanya file dengan extension jpg, jpeg, dan png.

8. Password Yang Aman

Untuk meningkatkan keamanan password di website CodeIgniter, Implementasikan kekuatan password pada form register dengan password yang kuat. Gunakan kombinasi karakter yang kuat (huruf besar, kecil, angka, simbol), panjang minimal 12 karakter.

Gunakan Hashing yang aman untuk password. Hash adalah salah satu fungsi pada php untuk melakukan (one way hashing) atau hashing satu arah untuk merubah plain text menjadi suatu kode acak atau kode enkripsi. metode ini cocok untuk mengamankan password anda, karena algoritma one way hashing ini tidak bisa kembali lagi ke data / plain teks sebelumnya.

BACA JUGA: Cara Kelola Sandi yang Aman Melalui Google Password Manager

9. Matikan Directory listings

Ketika directory listings aktif, directory yang tidak memiliki file index akan menampilkan daftar file yang terdapat pada directory tersebut terutama directory asset.

Untuk menyembunyikan file tersebut, cara pertama, buat sebuah file html kosong, dan beri nama index.htm kemudain upload ke website (atau pada folder/directory tertentu di website)

Sedangkan cara kedua, gunakan file .htaccess untuk men-disable directory listing. Masukkan saja perintah Options -Indexes pada .htaccess. Sekarang, pengunjung website Anda akan mendapatkan error 403 dan bukan daftar dari isi direktori Anda.

10. Membatasi akses ke file penting

Pastikan file-file penting seperti .env, application/config, dan lainnya tidak dapat diakses langsung oleh pengguna. Anda bisa mengonfigurasi file .htaccess untuk memblokir akses ke file tertentu.

Contoh .htaccess untuk melindungi file konfigurasi:

<FilesMatch "^(application|system)/.*$">
    Order Deny,Allow
    Deny from all
</FilesMatch>

Gunakan CAPTCHA untuk menghindari serangan pada form atau formulir. Jika ada form atau formulir yang memungkinkan pengguna untuk mengirimkan data, gunakan CAPTCHA untuk mencegah serangan bot.

CodeIgniter tidak menyediakan CAPTCHA bawaan, tetapi bisa menggunakan layanan pihak ketiga seperti Google reCAPTCHA. Tutorial cara menambahkan reCAPTCHA di CodeIgniter 4 bisa Anda pelajari di artikel berikut.

11. Menonaktifkan Error Reporting

Cara meningkatkan keamanan website CodeIgniter yang terakhir adalah menonaktifkan error reporting. Jangan sampai pesan error muncul pada website jika sudah live (production), karena bisa memberikan informasi yang berguna bagi hacker. Nonaktifkan error reporting dengan mengubah konfigurasi Berikut

Untuk CodeIgniter 3 pada file index.php pastikan dikonfigurasi sebagai berikut :

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'production');

Untuk CodeIgniter 4 pada file .env, hilangkan tanda pagar (#) dibagian CI_ENVIRONMENT seperti berikut.

CI_ENVIRONMENT = production

Penutup

Menjaga keamanan website berbasis CodeIgniter adalah langkah penting untuk melindungi data dan memastikan performa situs tetap optimal. Dengan menerapkan langkah-langkah keamanan yang tepat, seperti yang telah kami sampaikan diatas, dapat meminimalkan risiko serangan.

Jika Anda membutuhkan layanan hosting yang cepat, aman dan andal untuk website CodeIgniter Anda, Rumahweb adalah pilihan yang tepat. Dilengkapi dengan SSL gratis, Firewall, ModSec, hingga Imunify360 yang merupakan kombinasi keamanan terbaik yang dapat melindungi website CodeIgniter Anda.

Demikian beberapa cara meningkatkan keamanan website CodeIgniter yang bisa Anda lakukan untuk melindungi website berbasis CodeIgniter agar lebih aman. Selamat mencoba 🙂

Bermanfaatkah Artikel Ini?

Klik bintang 5 untuk rating!

Rating rata-rata 5 / 5. Vote count: 1

Belum ada vote hingga saat ini!

Kami mohon maaf artikel ini kurang berguna untuk Anda!

Mari kita perbaiki artikel ini!

Beri tahu kami bagaimana kami dapat meningkatkan artikel ini?

VPS Alibaba

Triyadi

Memberikan support kepada pelanggan Rumahweb dengan pengalaman sebagai technical support selama lebih dari 10 tahun. Selain itu aktif menulis di Journal Rumahweb mengenai domain, hosting, vps, email, dan tulisan lain seputar dunia IT

banner Pop Up - Hosting 99K