Laravel menyimpan konfigurasi sensitif seperti kredensial database dan API key di file .env. Jika file ini terakses publik atau masuk ke version control, data rahasia dapat bocor. Artikel ini memberikan langkah teknis lengkap untuk menutup celah keamanan tersebut.
Mengapa .env dan API Key Perlu Dilindungi
File .env berisi kunci rahasia yang tidak boleh diketahui publik. Kebocoran dapat menyebabkan:
- Penggunaan tidak sah terhadap layanan pihak ketiga (mis. Stripe, Google Maps).
- Injeksi data pada basis data produksi.
- Kerusakan reputasi dan potensi denda compliance.
Langkah-Langkah Mengamankan .env dan API Key
- Langkah 1: Tambahkan .env ke .gitignore
Pastikan file
.envtidak pernah masuk ke repository Git.# .gitignore /vendor /node_modules /.envJika sudah terlanjur ter-commit, gunakan perintah berikut untuk menghapus riwayat:
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch .env" --prune-empty --tag-name-filter cat -- --all git push origin --force --all git push origin --force --tags - Langkah 2: Set permission file .env
Batasi hak akses sehingga hanya user web server yang dapat membaca.
chmod 640 .env # owner read/write, group read, others none chown www-data:www-data .env # sesuaikan dengan user PHP-FPM/Apache - Langkah 3: Blok akses langsung ke .env melalui web server
Untuk Apache, tambahkan aturan di
.htaccessroot project:# .htaccess <Files ".env"> Order allow,deny Deny from all </Files>Untuk Nginx, edit server block:
# nginx.conf (atau site‑available) location ~* \.env$ { deny all; access_log off; log_not_found off; } - Langkah 4: Gunakan environment variables di level server
Alih‑alih menyimpan nilai sensitif di
.envpada produksi, set variabel di sistem operasi atau container.# contoh pada Ubuntu/Debian export APP_KEY=$(openssl rand -base64 32) export DB_PASSWORD="s3cur3P@ss" export STRIPE_SECRET="sk_live_XXXXXXXXXXXXXXXX"Lalu di
config/database.phpatau file konfigurasi lain, panggilenv('DB_PASSWORD')seperti biasa. - Langkah 5: Aktifkan konfigurasi cache
Setelah .env stabil, jalankan perintah berikut agar nilai konfigurasi disimpan di cache, mengurangi kebutuhan membaca .env pada setiap request.
php artisan config:cache php artisan route:cache php artisan view:cacheJika .env diubah, jalankan
php artisan config:clearterlebih dahulu. - Langkah 6: Enkripsi API key menggunakan Laravel Secret Manager (opsional)
Laravel 9+ menyediakan
php artisan secret:storeuntuk menyimpan nilai terenkripsi di filestorage/app/secrets. Contoh:# Simpan secret php artisan secret:store STRIPE_SECRET "sk_live_XXXXXXXXXXXXXXXX" # Mengakses di kode $stripeKey = secret('STRIPE_SECRET');Pastikan folder
storage/app/secretstidak dapat diakses publik (chmod 750, owner www-data).
Checklist Penutup
- .env berada di .gitignore dan sudah di‑remove dari riwayat Git.
- Permission file .env = 640, owner = web server user.
- Web server menolak akses langsung ke .env (Apache/Nginx).
- Variabel sensitif di‑set di level OS atau container pada produksi.
- Konfigurasi di‑cache dengan
php artisan config:cache. - Jika menggunakan Laravel Secret Manager, pastikan folder secret tidak dapat diakses publik.
"Keamanan data aplikasi dimulai dari konfigurasi paling dasar. Menjaga .env tetap tersembunyi adalah langkah pertama yang tidak boleh diabaikan," – Tim Keamanan AN Media, Jember.
Kesimpulan & Call to Action
Dengan mengikuti enam langkah di atas, file .env dan API key Anda akan terlindungi dari ekspos publik dan kebocoran melalui version control. Implementasikan segera pada semua proyek Laravel di AN Media, dan tawarkan audit keamanan gratis kepada klien yang ingin memastikan lingkungan produksi mereka aman.
Butuh bantuan lebih lanjut? Hubungi tim AN Media melalui info@anmedia.id atau kunjungi website resmi untuk konsultasi keamanan aplikasi.