Generator Token & API Key
Token aman secara kriptografis menggunakan Web Crypto API. UUID, hex, bearer token Base64, atau API key berprefiks.
Pengenal RFC 4122 v4 sepanjang 128 bit, 122 bit di antaranya acak. Pilihan bawaan untuk primary key database, ID permintaan, dan token korelasi.
122 bit entropi · dibuat di browser kamu, tidak pernah dikirim ke server
Mengapa tidak Math.random()?
Math.random() adalah generator angka pseudoacak — outputnya dapat diprediksi dan tidak cocok untuk token keamanan. Alat ini menggunakan crypto.getRandomValues(), API yang sama yang mendukung generasi kunci TLS dan SSH.
Penjelasan jenis token
UUID v4 adalah standar untuk ID database dan token korelasi. String hex cocok untuk token sesi dan nonce. Base64 lebih ringkas untuk token API. API key dengan prefiks (seperti sk_ atau vlt_) memudahkan identifikasi dan rotasi kredensial yang bocor.
Berapa panjang token yang tepat?
128 bit entropi adalah batas bawah untuk apa pun yang menjaga akses, dan itulah yang diharapkan NIST SP 800-63B dari sebuah rahasia yang dibuat secara acak. Setara dengan 32 karakter hex, 22 karakter Base64, atau satu UUID v4. Melebihi 256 bit tidak menambah perlindungan terhadap brute force - hanya menambah volume log dan ukuran header. Panjang lebih menentukan daripada jenis karakter: token hex 32 karakter dan token Base64 22 karakter sama sulitnya ditebak.
Bearer token, access token, dan API key
Nama-nama ini menggambarkan bagaimana sebuah kredensial dipakai, bukan bagaimana ia dibuat. Bearer token memberi akses hanya dengan ditunjukkan, itulah sebabnya header HTTP Authorization membawanya apa adanya. Access token adalah bearer token berumur pendek, biasanya diterbitkan oleh alur OAuth. API key adalah bearer token berumur panjang yang diterbitkan untuk sebuah layanan, bukan untuk seseorang. Pada saat pembuatan, ketiganya sama saja: string acak yang buram dengan entropi tinggi. Gunakan hex atau Base64 untuk dua yang pertama, dan mode API key bila kamu ingin prefiks yang bisa dipindai.
Mengapa API key perlu prefiks?
GitHub, Stripe, OpenAI, dan Slack memberi prefiks pada kunci mereka (ghp_, sk_live_, xoxb_) karena satu alasan: pemindai rahasia jadi bisa mengenali kunci yang bocor dari stringnya saja, tanpa konteks apa pun. Dorong kunci berprefiks ke repositori publik dan penerbitnya bisa mencabutnya dalam hitungan menit. String hex 32 karakter polos terlihat seperti hash commit, jadi tidak ada yang menangkapnya. Prefiks juga membuat lingkungan langsung terlihat, pertahanan termurah agar kunci produksi tidak tertempel ke konfigurasi staging.
Pertanyaan umum
Apakah token ini benar-benar acak?
Ya. Setiap token berasal dari crypto.getRandomValues(), generator angka acak browser yang aman secara kriptografis dan diberi seed dari kumpulan entropi sistem operasi. Ini primitif yang sama dengan yang menghasilkan kunci sesi TLS. Math.random(), yang masih dipakai banyak generator online, adalah generator pseudoacak yang dapat diprediksi dan tidak boleh sekali pun dipakai membuat token keamanan.
Apakah token saya dikirim ke server kalian?
Tidak. Pembuatan berlangsung sepenuhnya di browser kamu memakai Web Crypto API. Buka tab jaringan lalu buat sebuah token: tidak ada permintaan yang dikirim. Tidak ada yang dicatat, disimpan, atau ditransmisikan. Kalau setelahnya kamu memilih membagikan token itu, ia dienkripsi di browser kamu sebelum apa pun meninggalkan halaman.
Berapa panjang yang sebaiknya dipakai untuk API key?
128 bit entropi, persis yang dihasilkan mode API key pada alat ini: prefiks kamu ditambah 32 karakter heksadesimal. Secara praktis mustahil ditebak dan setara dengan yang diterbitkan Stripe, GitHub, dan AWS. Naikkan lebih tinggi hanya jika ada persyaratan kepatuhan tertentu yang memintanya.
Apa beda UUID v4 dengan token hex acak?
UUID v4 adalah token acak dengan bentuk tetap: 36 karakter, empat tanda hubung, dan enam bit yang dipesan untuk versi dan varian, menyisakan 122 bit acak. Gunakan bila ada sistem lain yang mengharapkan bentuk itu, misalnya kolom uuid di database. Gunakan hex atau Base64 biasa bila kamu hanya butuh sebuah rahasia dan formatnya terserah kamu - lebih pendek dengan kekuatan yang sama.
Bisakah membuat beberapa token sekaligus?
Bisa. Atur jumlahnya ke 5, 10, atau 25 dan setiap token dibuat secara independen. Salin semua menyalinnya satu per baris, format yang diterima sebagian besar skrip seed, berkas .env, dan pengelola kata sandi untuk impor massal.
Bagaimana cara mengirim token ke rekan kerja dengan aman?
Jangan lewat Slack, email, atau tiket - semuanya menyimpan salinan tanpa batas waktu, sehingga siapa pun yang kelak mendapat akses ke kanal itu mendapat akses ke kredensialnya. Pakai Bagikan dengan aman untuk menaruh token di balik tautan terenkripsi yang memusnahkan diri: token dienkripsi di browser kamu, kuncinya berjalan di fragmen URL dan tidak pernah sampai ke server kami, dan rahasianya dimusnahkan begitu dibaca atau saat kedaluwarsa.
Perlu berbagi token dengan aman?
Jangan tempel token di Slack atau email. Kirimkan melalui tautan terenkripsi yang memusnahkan diri sendiri, yang hanya bisa dibuka oleh penerima.