Key yang bocor berarti kuota dan poin Anda dipakai orang lain. Kelima kebocoran ini semuanya bisa dicegah.
API key Anda adalah kredensial yang memegang saldo. Siapa pun yang memilikinya bisa menghabiskan poin dan kuota Anda, dan Anda tidak akan tahu sampai tagihan atau saldo memberi tahu. Lima jalur kebocoran di bawah ini menyumbang hampir semua kasus di dunia nyata.
1. Key di JavaScript frontend
Ini yang paling umum, dan paling mudah dieksploitasi. Semua yang dikirim ke browser bisa dibaca β "menyembunyikan" key di bundle yang di-minify tidak menyembunyikan apa pun; satu klik di tab Network sudah cukup.
Solusinya adalah proxy tipis di backend Anda. Frontend memanggil server Anda; server Anda yang memegang key:
// backend Anda (Node/Express)
app.get('/api/proxy/wilayah/*', async (req, res) => {
const path = req.params[0] + (req.url.includes('?') ? '?' + req.url.split('?')[1] : '');
const upstream = await fetch(`https://v1.api.my.id/wilayah/${path}`, {
headers: { Authorization: `Bearer ${process.env.APIMYID_KEY}` }, // key tetap di server
});
res.status(upstream.status).json(await upstream.json());
});2. Key ter-commit ke Git
Key yang pernah masuk riwayat Git tetap ada di sana meski Anda menghapusnya di commit berikutnya β dan repositori publik dipindai bot dalam hitungan menit. Simpan key di environment variable, dan pastikan file rahasia masuk .gitignore sebelum commit pertama:
# .env (dan .env ada di .gitignore) APIMYID_KEY=myid_live_a1b2c3d4β¦
Jika key Anda pernah ter-commit, menganggapnya bocor adalah asumsi yang benar. Buat key baru dan cabut yang lama.
3. Key di aplikasi mobile
APK dan IPA bisa dibongkar. String di dalamnya bisa dibaca. Ini pada dasarnya masalah yang sama dengan frontend web: aplikasi mobile Anda harus memanggil backend Anda, bukan API kami secara langsung.
4. Key ikut ter-log
Logger yang mencatat seluruh header request akan menuliskan Authorization ke file log Anda β dan log sering dikirim ke layanan pihak ketiga, disimpan bertahun-tahun, dan bisa diakses lebih banyak orang daripada yang Anda kira. Redaksi header sensitif sebelum menulis:
const aman = { ...req.headers };
delete aman.authorization;
delete aman['x-api-key'];
logger.info({ headers: aman }, 'incoming request');5. Key dibagikan lewat chat
Key yang ditempel ke Slack atau WhatsApp akan hidup selamanya di riwayat percakapan, ter-index di pencarian, dan tersalin ke ponsel setiap anggota tim. Kirim lewat pengelola rahasia, bukan chat.
Kalau key sudah bocor
Langkahnya sederhana dan harus dilakukan segera: buat key baru lewat POST /keys/register atau dashboard, ganti key lama di semua deployment Anda, lalu periksa GET /keys/me untuk melihat pemakaian yang tidak Anda kenali.
Terakhir, satu praktik yang murah dan sangat berguna: pakai key berbeda untuk staging dan produksi. Kalau key staging bocor, produksi Anda tetap aman β dan Anda bisa mencabutnya tanpa drama.
Siap mencoba?
Buat akun gratis dan dapatkan API key β 5.000 hits gratis per bulan, dan dua endpoint yang tak butuh key sama sekali.