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.
Apakah Shield menyimpan isi request?
Section titled “Apakah Shield menyimpan isi request?”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.
Kenapa tidak boleh pakai proxyIPs = '*'?
Section titled “Kenapa tidak boleh pakai proxyIPs = '*'?”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 (prefixstr_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.
Seberapa besar dampaknya ke performa?
Section titled “Seberapa besar dampaknya ke performa?”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