Hook secrets menandai kredensial yang tertanam di kode sumber alih-alih dibaca dari environment. Hook ini berpatokan pada asal-usul nilainya (literal atau pembacaan dari environment), bukan pada isi nilainya, sehingga tidak memerlukan katalog lengkap prefiks penyedia layanan dan hampir tidak menghasilkan positif palsu. Hook ini adalah engine deterministik di balik spesialisasi secrets.
Signature format penyedia layanan, kredensial di connection string, dan literal yang diberikan ke identifier bernama secret bersifat tidak bergantung pada bahasa: string yang sama terbaca sama di file mana pun. Dua heuristik yang bergantung pada sintaksis, yaitu pembacaan environment dengan nilai default yang hardcoded dan secret yang mengalir ke sink log, mengenali bahasa, sehingga console.log JavaScript tidak pernah dicari di file Rust dan os.getenv("X", "default") milik Python dikenali tersendiri.
Menjalankan
npx lagune read secrets # scans the whole project
npx lagune read secrets --dir src # scans a directory
npx lagune read secrets --file config.ts # scans a single file
Pemindaian mencetak hingga dua bagian. Hardcoded secrets found berisi temuan (nilai default yang hardcoded untuk variabel environment bernama secret, kredensial yang tertanam di connection string, atau nilai yang cocok dengan format penyedia layanan yang terkurasi), jadi hook ini keluar dengan kode bukan nol. Secret handling to review manually berisi petunjuk: literal biasa yang diberikan ke identifier bernama secret (asal-usulnya bisa dipastikan, tetapi apakah nilainya secret sungguhan tidak bisa), dan nilai bernama secret yang mengalir ke sink log atau response. Proses yang bersih mencetak no hardcoded secrets found.
Opsi CLI
| Opsi | Nilai | Deskripsi |
|---|---|---|
--dir | direktori | Membatasi pemindaian ke satu direktori. Bisa diulang dan digabung dengan --file. |
--file | file | Membatasi pemindaian ke satu file. Bisa diulang dan digabung dengan --dir. |
Tanpa opsi apa pun, hook ini memindai seluruh proyek.
Pilih apa yang dipindai
Hook ini melewati apa yang diabaikan Git. Untuk melewati lebih banyak, atau untuk memindai apa yang diabaikan Git, beri secrets pengaturannya sendiri:
npx lagune write add --ignore test/fixtures --checker secrets
{
"checkers": {
"secrets": { "gitignore": false, "ignore": ["test/fixtures"] }
}
}
Konfigurasi hook membahas semua pengaturannya.
Cakupan bahasa
Temuan default environment dan petunjuk sink log membaca kumpulan bentuk yang berbeda untuk tiap bahasa, jadi keduanya mencakup bahasa di bawah ini dan diam di bahasa lain. Tiga sinyal lainnya berjalan di setiap file.
| Sinyal | Bahasa |
|---|---|
| Default environment | JavaScript/TypeScript, Python, Ruby, PHP, Kotlin, Java, Go (cmp.Or), Rust, C# |
| Sink log atau response | JavaScript/TypeScript, Python, Ruby, PHP, Java, Kotlin, Go, Rust, C, C++, C# |
Tidak. Mendeteksi format secret untuk memperingatkan bahwa secret itu telah di-commit adalah praktik standar perangkat keamanan defensif, operasi yang sama dengan yang dilakukan gitleaks, trufflehog, dan push protection GitHub. Hook ini membawa signature deteksi (format token yang bersifat publik), tidak pernah secret sungguhan, dan hook ini mengaudit serta menjelaskan alih-alih mengeksfiltrasi.
Pertanyaan yang sering diajukan
Hook ini berpatokan pada asal-usul nilai, bukan pada isinya. Format dengan tingkat keyakinan tinggi (token penyedia layanan, fallback environment, connection string) adalah temuan yang keluar dengan kode bukan nol. Literal biasa yang diberikan ke identifier bernama secret adalah petunjuk untuk ditinjau dan dikonfirmasi, dan identifier yang sama yang dibaca dari process.env sama sekali tidak ditandai.
