Laravel Shieldv1.2.x
Tanya jawab
Apakah Shield menggantikan firewall hosting?
Section titled “Apakah Shield menggantikan firewall hosting?”Tidak. Keduanya di layer berbeda. Firewall hosting atau Cloudflare bekerja sebelum request sampai ke aplikasi; Shield bekerja setelah request sampai ke PHP, tapi sebelum controller. Shield menang dalam hal riwayat: ia tahu bahwa satu IP sudah mencoba 300 URL berbeda, bukan hanya bahwa URL ke-301 bermasalah.
Apakah Shield menggantikan WAF?
Section titled “Apakah Shield menggantikan WAF?”Tidak, tapi fungsinya beririsan. Kalau Anda sudah punya WAF di CDN, Shield berguna sebagai lapisan kedua yang punya memori dan bisa membedakan pola perilaku dari signature statis.
Saya cuma belajar Laravel, apakah perlu ini?
Section titled “Saya cuma belajar Laravel, apakah perlu ini?”Belum tentu perlu. Shield paling berguna saat aplikasi Anda sudah daring dan nilainya berarti. Untuk belajar di localhost, belum banyak gunanya.
Tapi memasang di mode observe itu murah dan aman: Shield hanya mencatat.
Kalau Anda mau, pakai juga sebagai alat belajar — baca log-nya dan pahami
kenapa request tertentu ditandai.
Kenapa default-nya observe, bukan langsung memblokir?
Section titled “Kenapa default-nya observe, bukan langsung memblokir?”Karena kesalahan konfigurasi jauh lebih merusak daripada serangan yang lolos. Kalau ambang batas terlalu ketat, Anda memblokir pengguna asli dan tidak akan tahu selama berbulan-bulan. Kalau terlalu longgar, penyerang hanya perlu menambah upaya sedikit.
Jadi Shield mulai dengan menghitung, lalu Anda yang memutuskan.
Kenapa 404 dan bukan 403 untuk request yang diblokir?
Section titled “Kenapa 404 dan bukan 403 untuk request yang diblokir?”Supaya penyerang tidak bisa memastikan ada atau tidaknya firewall di depan
situs Anda. Dengan 404, request ke /.env dan request ke /halaman-yang-tidak-ada
kelihatan sama saja.
Kalau Anda lebih suka kejelasan, ubah SHIELD_RESPONSE_CODE=403. Tapi jadi
sedikit membocorkan informasi.
Kenapa 404 dan bukan 429?
Section titled “Kenapa 404 dan bukan 429?”Alasannya sama: 429 memberi tahu penyerang bahwa ada sesuatu yang membatasi
di depan situs. Kalau memang itu yang Anda inginkan, 429 juga sah sebagai
nilai response_code.
Apakah Shield menyimpan isi request?
Section titled “Apakah Shield menyimpan isi request?”Tidak. Yang disimpan adalah URL, User-Agent, referer, rule yang cocok, dan skornya. Body request tidak pernah ditulis ke database maupun log — hanya nama rule yang cocok. Ini supaya password dan data pribadi tidak bocor ke storage Anda sendiri.
Parameter query yang sensitif juga disamarkan jadi *** sebelum disimpan.
Apakah ini benar-benar gratis?
Section titled “Apakah ini benar-benar gratis?”Ya, Shield sendiri tidak mengenakan biaya layanan. Cloudflare Turnstile punya kuota
gratis yang jauh melebihi kebutuhan kebanyakan situs. Kalau kuota itu terlampaui,
ganti ke recaptcha atau pakai mode challenge yang lebih jarang.
Saya di belakang Cloudflare, apakah harus mengonfigurasi proxy?
Section titled “Saya di belakang Cloudflare, apakah harus mengonfigurasi proxy?”Ya. Ini bagian yang paling sering terlewat. Tanpa trusted proxy, Laravel melihat IP Cloudflare untuk semua orang. Akibatnya Shield bisa:
- memblokir semua pengguna sekaligus,
- memberi challenge massal,
- salah menghitung rate limit.
Dan yang lebih buruk: penyerang cukup mengubah header X-Forwarded-For untuk
menyembunyikan IP aslinya, sehingga seluruh proteksi berbasis IP jadi tidak
berguna.
Petunjuk lengkapnya ada di Instalasi.
Kenapa tidak bisa pakai trustProxies(at: '*')?
Section titled “Kenapa tidak bisa pakai trustProxies(at: '*')?”Karena itu berarti percaya header forwarded dari siapa saja, termasuk dari penyerang. Kalau aplikasi Anda bisa dijangkau langsung tanpa lewat proxy, satu header palsu sudah cukup untuk membuat Shield salah mengira IP mana.
Selalu tuliskan CIDR proxy yang Anda percaya.
Kenapa composer require gagal untuk 1.2.1?
Section titled “Kenapa composer require gagal untuk 1.2.1?”Tag Git-nya dipindahkan, dan Packagist menolak tag yang dipindahkan. Pasang
^1.2.2. Penjelasan lengkapnya ada di
Masalah umum.
Bisakah saya menulis rule sendiri?
Section titled “Bisakah saya menulis rule sendiri?”Bisa, dan Anda tidak perlu mendaftarkan file terpisah. Tulis definisinya di
config/shield.php dengan id yang baru, atau id yang sama untuk menimpa
rule bawaan. Detailnya ada di Rules.
Bisakah saya mengecualikan path saya dari pemeriksaan?
Section titled “Bisakah saya mengecualikan path saya dari pemeriksaan?”Bisa, lewat allowlist.paths. Tapi ada dua batasan penting: pencocokan
menggunakan awalan, jadi '/admin' juga mencakup '/administrator'; dan
allowlist tidak pernah melewati rule critical seperti /.env.
Untuk endpoint yang memang wajar mengirim payload yang terlihat berbahaya,
lebih baik pakai rules.skip_paths — itu lebih sempit dan tetap menjaga
signature di URI.
Kenapa semua orang dari IP yang sama kena challenge?
Section titled “Kenapa semua orang dari IP yang sama kena challenge?”Karena rate limit Shield dihitung per IP. Kantor, kampus, dan jaringan
seluler berbagi IP. Untuk kasus seperti itu, challenge lebih tepat daripada
ban.
Apakah ini akan memblokir mesin telat indeks saya sendiri?
Section titled “Apakah ini akan memblokir mesin telat indeks saya sendiri?”Tidak, asalkan Anda tidak melakukan kesalahan konfigurasi. Shield memverifikasi
crawler lewat reverse-DNS dan CIDR, bukan sekadar percaya User-Agent. Isi
bots.verification.ip_ranges untuk memastikan verifikasi tidak bergantung pada
DNS.
Kalau Googlebot Anda benar-benar tersingkir, ada bagian khusus untuk itu di Bot dan crawler.
Seberapa besar dampaknya ke performa?
Section titled “Seberapa besar dampaknya ke performa?”Untuk request normal: normalisasi URI dan pencocokan string. Murah.
Untuk request mencurigakan: satu pembacaan cache, dan kalau benar-benar perlu satu query database. Ban disimpan di cache 30 detik supaya tidak membebani database.
Dua opsi yang paling mempengaruhi performa: performance.max_uri_length dan
decode_depth. Naikkan hanya kalau Anda tahu alasan Anda melakukannya.
Apakah saya bisa melihat apa yang terjadi?
Section titled “Apakah saya bisa melihat apa yang terjadi?”Ya:
php artisan shield:healthphp artisan shield:reportAtau nyalakan panel admin kalau Anda butuh melihatnya lewat browser. Detailnya ada di Admin API.
Kalau saya tidak suka, bagaimana melepasnya?
Section titled “Kalau saya tidak suka, bagaimana melepasnya?”Hapus baris middleware dari bootstrap/app.php.\Data dan tabelnya tetap ada,
tapi tidak ada lagi yang dicek. Anda juga bisa menyalakan
SHIELD_ENABLED=false sebagai sakelar yang lebih halus.
Apakah ini cocok untuk aplikasi non-publik yang sensitif?
Section titled “Apakah ini cocok untuk aplikasi non-publik yang sensitif?”Hapus baris middleware dari bootstrap/app.php. Data dan tabelnya tetap ada,
tahu batasannya. Ringkasnya: Shield menahan serangan yang dikenal, bukan
menggantikan validasi input, escaping, autentikasi, dan patch dependency.
Dua paket itu, atau satu?
Section titled “Dua paket itu, atau satu?”Dua. ganadev/shield-core adalah mesinnya, dan
ganadev/laravel-shield adalah adapter Laravel. Memasang laravel-shield
otomatis menarik shield-core, jadi Anda tidak perlu memasang keduanya.
Kalau Anda cuma memakai Laravel, cukup pasang laravel-shield. Penjelasan lengkap
tentang pemisahannya ada di Arsitektur Shield Core.
Powered by PT Ganadev Multi Solusi