File .env yang terekspos: cara penyerang menemukan rahasiamu
File .env menyimpan password database, API key, dan secret untuk signing. Kalau bisa dijangkau lewat web — di /.env, /.env.production, atau backup seperti /.env.backup — siapa pun bisa mengunduhnya dan mengambil alih layananmu.
Apa itu
File environment seharusnya tetap ada di server dan tidak pernah disajikan ke klien. Handler statis yang salah konfigurasi, salinan tercecer di web root, atau framework yang menyajikan dotfile bisa mengeksposnya.
Penyerang tidak menebak — mereka menjalankan scan otomatis yang meminta /.env dan puluhan variannya ke jutaan host secara terus-menerus. File yang bisa dijangkau akan ditemukan dalam hitungan jam.
Kenapa penting
File-file ini rutin berisi URL database produksi, Stripe secret key, JWT signing secret, dan kredensial cloud. Satu kebocoran bisa berarti pencurian data total, transaksi penipuan, dan pengambilalihan akun.
Karena secret-nya tetap valid sampai dirotasi, kerusakannya berlanjut lama setelah file dihapus, kecuali kamu merotasi semua yang ada di dalamnya.
Cara memperbaiki
Tolak akses ke .env dan dotfile lain di konfigurasi web server atau proxy-mu.
location ~ /\.(?!well-known).* {
deny all;
return 404;
}Simpan konfigurasi di luar direktori mana pun yang disajikan server secara statis, dan pastikan proses build-mu tidak menyalin file .env ke output yang dipublikasikan.
Kalau sebuah file pernah bisa dijangkau, anggap setiap secret di dalamnya sudah bocor dan segera rotasi password database, API key, dan token.
FAQ
Aku sudah menghapus filenya — apakah aku aman?
Belum, sampai kamu merotasi secret-nya. Siapa pun yang sudah mengunduhnya masih memegang kredensial yang valid sampai kamu menggantinya.
Bagaimana aku tahu punyaku terekspos?
Minta https://yourdomain.com/.env di browser. Kalau kamu melihat baris KEY=value alih-alih 404, berarti terekspos. AppSafe memeriksa ini secara otomatis.
Apakah aplikasimu terpengaruh?
AppSafe memeriksa ini dan puluhan masalah lain dalam satu pemindaian gratis.
Pindai aplikasiku gratisPanduan terkait
API key terekspos di JavaScript sisi klien
Apa pun di bundle-mu bersifat publik. Perlakukan seperti itu.
Source map di produksi membocorkan kode sumbermu
File .map yang ikut terkirim menyerahkan kode sumber aslimu.
Kesalahan konfigurasi CORS: jebakan wildcard dan reflection
Izinkan setiap origin dan situs mana pun bisa membaca API-mu.