Tim AN Media menemukan banyak proyek Laravel yang bocor karena file .env atau API key tidak dilindungi dengan benar. Artikel ini memberikan langkah teknis yang dapat langsung Anda terapkan untuk menutup celah keamanan tersebut.
Langkah 1: Atur Permission File .env
- Pastikan hak akses hanya untuk user aplikasi. Jalankan perintah berikut di server Linux Anda:
Denganchmod 640 .env chown www-data:www-data .env640, hanya pemilik (www-data) yang dapat membaca, grup dapat membaca, dan publik tidak memiliki akses. - Verifikasi permission. Gunakan
ls -l .envuntuk memastikan output-rw-r----- 1 www-data www-data.
Langkah 2: Pindahkan .env di Luar Web Root dan Buat Symlink
- Buat direktori khusus di luar
/var/www/html, misalnya/var/www/config:mkdir -p /var/www/config mv /var/www/html/.env /var/www/config/.env - Buat symbolic link di dalam root aplikasi:
ln -s /var/www/config/.env /var/www/html/.env - Uji dengan
php artisan envuntuk memastikan Laravel tetap menemukan file .env.
Langkah 3: Tambahkan Aturan Server untuk Menolak Akses .env
Apache (.htaccess)
<Files ".env">
Require all denied
</Files>
Nginx (server block)
location ~* \.env$ {
deny all;
access_log off;
}
Reload konfigurasi setelah perubahan:
sudo systemctl reload apache2 # untuk Apache
sudo systemctl reload nginx # untuk Nginx
Langkah 4: Gunakan Config Caching untuk Menghilangkan Ketergantungan .env di Runtime
- Ubah semua panggilan
env('KEY')menjadiconfig('app.key')atau konfigurasi yang relevan. - Cache konfigurasi dengan perintah Artisan:
Setelah cache, Laravel tidak lagi membaca file .env pada setiap request.php artisan config:cache
Langkah 5: Enkripsi Nilai Sensitif di .env (Opsional)
Laravel menyediakan helper encrypt(). Simpan nilai terenkripsi dan dekripsi pada runtime:
# .env
ENCRYPTED_API_KEY=eyJpdiI6Ik...
// config/app.php
'api_key' => decrypt(env('ENCRYPTED_API_KEY')),
Pastikan APP_KEY kuat dan tidak pernah dibagikan.
Langkah 6: Rotasi API Key dan Integrasi dengan CI/CD Secret Store
- Gunakan layanan secret manager seperti HashiCorp Vault, AWS Secrets Manager, atau GitLab CI variables untuk menyimpan API key.
- Di pipeline CI/CD, inject nilai ke file .env sementara sebelum build:
echo "API_KEY=${CI_API_KEY}" >> .env - Setelah deployment, hapus file .env yang di‑generate secara otomatis dan gunakan
php artisan config:cacheuntuk mengunci nilai.
"Keamanan dimulai dari konfigurasi paling dasar. Menjaga .env tetap di luar jangkauan publik adalah langkah pertama yang tidak boleh diabaikan," – Tim Keamanan AN Media.
Kesimpulan & Call to Action
Dengan mengikuti enam langkah di atas, Anda menutup celah paling umum yang mengakibatkan kebocoran kredensial pada aplikasi Laravel. AN Media siap membantu audit keamanan, implementasi secret manager, atau pengembangan fitur tambahan. Hubungi kami sekarang untuk memastikan aplikasi Anda tahan terhadap serangan data breach.