Bagaimana mengamankan website yang menggunakan Codeigniter 4

Published on 22 Mar 2025 by nursahid 3927

Bagaimana mengamankan website yang menggunakan Codeigniter 4

Mengamankan website yang menggunakan CodeIgniter 4 sangat penting untuk mencegah serangan seperti SQL Injection, Cross-Site Scripting (XSS), CSRF, dan lainnya. Berikut adalah beberapa langkah yang bisa Anda terapkan:

✅ 1. Gunakan CSRF Protection

CodeIgniter 4 sudah memiliki fitur CSRF (Cross-Site Request Forgery) Protection bawaan.

Untuk mengaktifkannya:

???? Tambahkan di .env

security.csrfProtection = true

Atau di app/Config/Security.php:

public bool $csrfProtection = true;

???? Tambahkan Token di Form

Atau di AJAX:

js

headers: {

"X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr('content')

}

________________________________________

✅ 2. Lindungi dari SQL Injection

Gunakan Query Builder daripada menulis query mentah:

$db = db_connect();

$query = $db->table('users')->where('email', $email)->get();

Jangan gunakan query langsung tanpa filter:

$query = $db->query("SELECT * FROM users WHERE email = '$email'"); // ❌ Rentan SQL Injection

________________________________________

✅ 3. Aktifkan XSS Filtering

Gunakan esc() untuk memfilter input yang ditampilkan di HTML:

echo esc($data['username']);

Atau saat mengambil input:

$name = $this->request->getPost('name', FILTER_SANITIZE_STRING);

________________________________________

✅ 4. Validasi Input dengan Validation Rules

Selalu validasi input sebelum diproses:

$validation = \Config\Services::validation();

$validation->setRules([

'email' => 'required|valid_email',

'password' => 'required|min_length[8]'

]);


if (!$validation->withRequest($this->request)->run()) {

return redirect()->back()->withInput()->with('errors', $validation->getErrors());

}

________________________________________

✅ 5. Hindari Menampilkan Error di Production

Di .env, ubah:

CI_ENVIRONMENT = production

Agar error tidak ditampilkan secara detail ke pengguna.

________________________________________

✅ 6. Gunakan HTTPS

Pastikan aplikasi hanya berjalan di HTTPS agar data lebih aman.

Di .htaccess, tambahkan:

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

________________________________________

✅ 7. Batasi Akses ke public/

Pastikan semua request masuk ke dalam folder public/.

Di .htaccess root project:

RewriteCond %{REQUEST_URI} !^/public/

RewriteRule ^(.*)$ /public/$1 [L]

________________________________________

✅ 8. Gunakan Password Hashing untuk Login

Jangan simpan password dalam teks biasa. Gunakan password_hash():

$hashedPassword = password_hash($password, PASSWORD_DEFAULT);

Dan verifikasi saat login:

if (password_verify($inputPassword, $user['password'])) {

echo "Login berhasil!";

}

________________________________________

✅ 9. Batasi Akses File dengan .htaccess

Pastikan direktori writable/ dan app/ tidak bisa diakses langsung dari browser.

Di dalam writable/.htaccess:

Deny from all

________________________________________

✅ 10. Gunakan Rate Limiting untuk API

Jika Anda memiliki API, batasi jumlah request agar tidak terkena DDoS:

$throttler = \Config\Services::throttler();

if ($throttler->check(md5($this->request->getIPAddress()), 60, MINUTE) === false) {

return $this->response->setStatusCode(429)->setBody('Terlalu banyak request, coba lagi nanti.');

}

(Limit: 60 request per menit per IP)

________________________________________

✅ 11. Gunakan session_regenerate_id() setelah Login

Untuk mencegah Session Hijacking, tambahkan ini setelah login:

session()->regenerate();

________________________________________

✅ 12. Filter Input dengan Content Security Policy (CSP)

Di app/Config/Filters.php, aktifkan CSP untuk mencegah XSS:

public $globals = [

'before' => [

'security'

]

];

________________________________________

✅ Kesimpulan

Mengamankan website CodeIgniter 4 membutuhkan kombinasi pengaturan server, keamanan input, serta praktik terbaik dalam pemrograman. Dengan menerapkan langkah-langkah di atas, website Anda akan lebih sulit untuk diretas.



Nur Sahid
Nur Sahid

Nur Sahid ayah dari empat orang putra bernama Mufidah, Ukasyah, Nadzifah dan Nadzif. Saat ini saya bekerja sebagai ASN untuk Mata Pelajaran Informatika di SMP Negeri 3 Mepanga. Selain menjadi guru saya juga seorang freelance Web Developer dan Android Apps.

Profile | Facebook | Instagram | YouTube

0 Komentar

Komentar
Tambahkan Komentar

Related Posts

Home Blog Products Login