Lewati ke konten

CodeIgniter 4 Shieldv1.2.x

Pertanyaan Umum

Apakah Shield menggantikan firewall hosting?

Section titled “Apakah Shield menggantikan firewall hosting?”

Tidak. Shield adalah lapisan terakhir sebelum controller: ia berjalan di dalam aplikasi. Firewall hosting / CDN tetap berguna untuk memblokir banjir traffic sebelum sampai ke server. Shield justru pandai untuk hal yang kebanyakan WAF tidak bisa: mengenali pola antar request.

Saya cuma belajar CodeIgniter 4, apakah perlu ini?

Section titled “Saya cuma belajar CodeIgniter 4, apakah perlu ini?”

Kalau aplikasi Anda baru di localhost, belum terlalu berguna. Shield adalah perlindungan untuk aplikasi yang sudah bisa diakses dari internet. Tidak ada salahnya memasang dalam mode observe — ia hanya mencatat dan tidak mengganggu.

Kenapa default-nya observe, bukan langsung memblokir?

Section titled “Kenapa default-nya observe, bukan langsung memblokir?”

Supaya pemasangan pertama tidak mengagetkan. Shield mencatat keputusan tanpa mengeksekusinya, Anda baca hasilnya, lalu naikkan mode saat yakin. Kesalahan mode langsung memblokir bisa memutus ribuan pengguna.

Kenapa 404 dan bukan 403 untuk request yang diblokir?

Section titled “Kenapa 404 dan bukan 403 untuk request yang diblokir?”

Kode 404 tidak memberi tahu penyerang bahwa target itu ada. Setelah request diblokir, mereka tidak tahu apakah URL-nya nyata. Nilainya konfigurasi (responseCode), jadi bisa diganti.

Apakah request ke URL tanpa route (404) diperiksa?

Section titled “Apakah request ke URL tanpa route (404) diperiksa?”

Secara default paket belum. Provider memasang filter ke globals['before'], yang berjalan setelah router; /.env dan path acak berhenti di PageNotFoundException sebelum filter sempat berjalan. Instalasi default di dokumentasi ini memakai ShieldGateFilter di required['before'] dan menghapus shield.firewall dari global filter. Lihat Registrasi & Urutan Filter.

Shield menyimpan ringkasan: IP, host, URL (dengan nilai parameter sensitif disamarkan), User-Agent, dan keputusan. Isi body request tidak disimpan. Baca Model Keamanan untuk detail privasi.

Saya di belakang Cloudflare, apakah harus mengonfigurasi proxy?

Section titled “Saya di belakang Cloudflare, apakah harus mengonfigurasi proxy?”

Ya. Isi proxyIPs di app/Config/App.php dengan rentang IP Cloudflare. Tanpa itu, semua pengunjung terlihat berasal dari IP Cloudflare yang sama — dan Shield bisa memblokir SEMUA orang sekaligus.

Karena CI4 4.3+ tidak mendukung wildcard. '*' bukan berarti “percaya semua header”; nilainya malah melempar ConfigException karena format yang benar adalah array asosiatif [CIDR => header]. Tuliskan selalu rentang CIDR proxy yang nyata.

Bisakah saya mengecualikan path saya dari pemeriksaan?

Section titled “Bisakah saya mengecualikan path saya dari pemeriksaan?”

Ada tiga tingkat:

  • skipPaths — lewatkan pemeriksaan body & deteksi perilaku untuk path itu. Pencocokan signature pada URI tetap berjalan.
  • allowlistPaths — lewati keputusan untuk path itu (prefix str_starts_with).
  • allowlistHosts / allowlistIps — host / IP yang selalu lolos.

Allowlist bukan kartu bebas. Kalau ada critical signature yang cocok, request tetap diblokir walaupun host, IP, atau path-nya ada di allowlist. skipPaths juga hanya mengurangi pemeriksaan, bukan mematikan semuanya.

Apakah ini akan memblokir mesin telusur saya sendiri?

Section titled “Apakah ini akan memblokir mesin telusur saya sendiri?”

Biasanya tidak, terutama pada botMode observe. Bot yang terverifikasi (Googlebot asli, dll.) tidak di-challenge. Klaim “Googlebot” palsu tetap mengumpulkan sinyal dan bisa di-challenge atau diblokir saat mode challenge/enforce, tergantung skornya. Pastikan verifikasi crawler aktif.

Setiap request melewati sedikit pemeriksaan tambahan: pencocokan rule dan beberapa keputusan cache. Untuk aplikasi biasa efeknya kecil. Kalau khawatir, matikan bodyInspectionEnabled untuk request besar, dan perhatikan maxUriLength / decodeDepth.

Apakah saya bisa melihat apa yang terjadi?

Section titled “Apakah saya bisa melihat apa yang terjadi?”

Ya — tiga perintah utama: shield:health (memeriksa komponen), shield:report (ringkasan kejadian), dan shield:rules:list (rule yang dimuat).

Kalau saya tidak suka, bagaimana melepasnya?

Section titled “Kalau saya tidak suka, bagaimana melepasnya?”

Matikan semuanya di app/Config/Shield.php: enabled = false. Mode observe juga tidak memblokir apa pun, tetapi tetap mencatat event selama enabled masih true.

Apakah AI crawler (GPTBot, ClaudeBot) diblokir?

Section titled “Apakah AI crawler (GPTBot, ClaudeBot) diblokir?”

Tidak dengan sendirinya. Shield tidak membedakan AI crawler dalam perlakuan khusus. Kalau Anda mau mencegatnya, tambahkan penanda User-Agent ke suspiciousUserAgents, atau blokir di level server. Jangan memakai suspiciousUserAgentOverrides — properti itu tidak diteruskan ke core. Contoh untuk nginx ada di Perilaku & Bot.

Apakah ini cocok untuk aplikasi non-publik?

Section titled “Apakah ini cocok untuk aplikasi non-publik?”

Kalau aplikasi hanya bisa diakses dari jaringan internal Anda, Shield kurang berguna — ancamannya kecil. Untuk keamanan yang lebih besar, pastikan aplikasi tidak bisa diakses publik sama sekali di level jaringan.

Powered by PT Ganadev Multi Solusi