Keamanan Watch-IP dan penanganan API key
Halaman ini menjelaskan kontrol akses yang benar-benar diterapkan pada API Watch-IP saat ini: cara kerja kedua jenis key, cara origin ditegakkan, cara key dapat dirotasi atau dicabut, dan cara melaporkan masalah keamanan. Halaman ini tidak mengklaim sertifikasi kepatuhan atau audit keamanan independen — belum ada yang selesai dilakukan hingga tulisan ini dibuat.
Dua jenis key, dua kontrol berbeda
Publishable key (digunakan untuk GET /v1/geo dan POST /v1/email/validate) dirancang untuk berjalan di kode browser dan tidak bersifat rahasia — kontrolnya adalah daftar allowed-origins yang dikonfigurasi untuk key tersebut, dicocokkan dengan header Origin/Referer pada request. Secret key (digunakan untuk GET/POST /v1/lookup dan POST /v1/risk/check) adalah kredensial server-ke-server tanpa pengecekan origin sama sekali, karena tidak ada header Origin browser pada panggilan backend; perlakukan secret key seperti password database, bukan pengenal publik. Lihat halaman autentikasi untuk format request yang diharapkan setiap jenis key.
Bagaimana penguncian origin ditegakkan
Request dengan publishable key dari origin yang tidak ada dalam daftar yang diizinkan akan mendapat 403 tanpa header Access-Control-Allow-Origin. Browser yang memblokir respons tersebut sebelum JavaScript halaman Anda dapat membacanya adalah penegakan yang sebenarnya — isi error JSON hanyalah pendukung. Penguncian origin tidak membuat key itu sendiri menjadi rahasia, dan tidak menghentikan klien non-browser mengirim header Origin palsu; ini secara khusus melindungi permukaan panggilan dari browser.
Transport dan penyimpanan
Lalu lintas ke API dan dashboard dienkripsi saat transit (TLS/HTTPS); API tidak menerima HTTP polos untuk request yang diautentikasi dengan key. API key disimpan dalam bentuk hash (SHA-256), bukan teks polos, sehingga kebocoran database saja tidak akan membocorkan nilai key yang bisa digunakan.
Rotasi dan pencabutan
Anda dapat mencabut atau merotasi key dari dashboard. Pencabutan tidak instan di semua tempat: validitas key di-cache hingga 5 menit setelah pencarian, sehingga key yang sudah dicabut dapat tetap diterima hingga 5 menit setelah Anda mencabutnya — pertimbangkan hal ini saat menghitung seberapa cepat Anda bisa memutus akses setelah dugaan kebocoran, dan lakukan rotasi secara proaktif alih-alih hanya mengandalkan pencabutan untuk insiden yang sensitif waktu.
Rate limit
Setiap key dibatasi rate-nya per akun pelanggan dalam jendela tetap satu menit, dibagi bersama di antara endpoint mana pun yang Anda panggil — bukan anggaran per rute. Ini membatasi kerusakan yang dapat ditimbulkan satu key yang bocor atau disalahgunakan dalam waktu singkat, meskipun ini sendiri bukan pengganti untuk merotasi key yang telah bocor.
Melaporkan masalah keamanan
Kirim email ke security@watch-ip.com jika Anda menduga sebuah key telah bocor atau Anda menemukan masalah keamanan di API atau dashboard. Kami saat ini belum menjalankan program bug-bounty publik atau memegang sertifikasi keamanan pihak ketiga — jika ini berubah, halaman ini akan menyatakannya dengan tanggal, bukan sekadar lencana (badge).