Masalah
APP_DEBUG yang aktif di production dapat membuka stack trace, variabel lingkungan sensitif, struktur aplikasi, dan query SQL ke publik. Selain itu, logging SQL query di app/Providers/AppServiceProvider.php, ketika debug ON, dapat membocorkan data kredensial dan query ke file log. Kedua hal ini sangat beresiko jika dibiarkan pada environment produksi.
Dampak
- Attacker bisa memahami struktur, menjalankan reverse engineering sistem, hingga membantu eksploitasi bug lain (RCE, SQLi, dsb).
- Parameter DB atau API secret bisa terekspos di log atau error page.
Langkah Penyelesaian
- Pastikan
.env production selalu menggunakan APP_DEBUG=false dan APP_ENV=production.
- Pada
AppServiceProvider, modifikasi agar logging SQL query tidak pernah aktif di production environment.
- Implementasikan error handler yang generik untuk semua error di production (tanpa stacktrace/detail path).
Contoh Perbaikan
// app/Providers/AppServiceProvider.php
default:
if (config('app.debug') && app()->environment() !== 'production') {
// SQL log hanya di dev/staging
DB::listen(function ($query) { ... });
}
// .env.production
APP_ENV=production
APP_DEBUG=false
Setelah Perbaikan
- Tes manual: Trigger error di production, pastikan error message tetap generic.
- Jalankan automated test untuk regresi logging/exception.
Masalah
APP_DEBUGyang aktif di production dapat membuka stack trace, variabel lingkungan sensitif, struktur aplikasi, dan query SQL ke publik. Selain itu, logging SQL query di app/Providers/AppServiceProvider.php, ketika debug ON, dapat membocorkan data kredensial dan query ke file log. Kedua hal ini sangat beresiko jika dibiarkan pada environment produksi.Dampak
Langkah Penyelesaian
.envproduction selalu menggunakanAPP_DEBUG=falsedanAPP_ENV=production.AppServiceProvider, modifikasi agar logging SQL query tidak pernah aktif di production environment.Contoh Perbaikan
Setelah Perbaikan