Artikel
Enkode dan dekode data secara privat
Setiap hari pengembang menempelkan token, payload, dan kredensial ke halaman enkode dan dekode. Yang paling praktis berjalan di server, artinya data Anda meninggalkan mesin untuk tugas yang sebenarnya tidak pernah memerlukannya. Empat alat ini berjalan sepenuhnya di peramban, jadi data tetap bersama Anda.
Base64: tampak acak, tetapi bukan rahasia
Base64 adalah enkode, bukan enkripsi. Ia mengubah data biner menjadi teks yang mampu bertahan saat disalin dan ditempel atau dilewatkan melalui sistem yang hanya menangani karakter sederhana. Siapa pun yang melihat string Base64 dapat mendekodenya kembali ke aslinya dalam satu langkah, sehingga string yang berisi kunci API, sertifikat privat, atau isi email sepenuhnya terbaca oleh siapa pun yang memegangnya. Risikonya, nilai itu sering bersembunyi di berkas konfigurasi, data URL, atau header autentikasi dan tampak samar, yang menggoda orang untuk menempelkannya ke dekoder pertama yang ditemukan daring. Dekoder itu menerima rahasia mentah. Alat yang mendekode Base64 secara lokal menampilkan byte aslinya tanpa nilai itu pernah mencapai server.

Enkode URL: query string membawa lebih banyak dari dugaan Anda
Enkode persen memungkinkan Anda menaruh spasi, aksen, dan karakter cadangan ke dalam URL dengan aman. Teks yang Anda enkode atau dekode sering kali adalah query string nyata dari sebuah aplikasi, dan query string membawa pengenal sesi, kata pencarian, alamat email, tujuan pengalihan, dan kadang parameter bertanda tangan. Menempelkan URL lengkap ke encoder jarak jauh menyerahkan semua itu kepada pihak ketiga sekaligus, dan query string persis jenis nilai yang berakhir di log server. Enkode dan dekode di peramban berarti URL diproses dalam memori di perangkat Anda sendiri dan tidak pernah dikirim selama Anda mengerjakannya.
JWT: payload ditandatangani, bukan disembunyikan
Sebuah JSON Web Token terdiri dari tiga bagian Base64url yang digabung dengan titik: header, payload, dan tanda tangan. Tanda tangan membuktikan token tidak diubah, tetapi sama sekali tidak menyembunyikan payload, yang terdekode menjadi JSON terbaca berisi pengenal pengguna, peran, waktu kedaluwarsa, dan klaim khusus apa pun yang ditambahkan penerbit. Token yang sah juga merupakan kredensial hidup: hingga kedaluwarsa, siapa pun yang memegangnya dapat bertindak sebagai pengguna. Menempelkan token yang berfungsi ke dekoder daring mengirim kredensial aktif ke server yang tidak Anda kendalikan. Dekoder yang mengurai token di peramban Anda menampilkan header dan payload yang sama tanpa token itu pernah meninggalkan halaman.

Hashing: masukan lebih penting daripada digest
Fungsi hash mengubah masukan apa pun menjadi digest berukuran tetap, dan Anda tidak dapat membalik digest kembali ke masukan. Sifat ini membuat hashing berguna untuk memverifikasi integritas berkas atau membandingkan nilai tanpa menyimpan aslinya. Jebakannya ada di sisi masukan: untuk menghitung hash sebuah kata sandi, dokumen, atau rahasia konfigurasi, Anda harus memberi alat itu nilai yang sebenarnya. Jika alat itu berjalan di server, masukan sensitif berpindah ke sana meski hanya digest tak berbahaya yang dikembalikan. Menghitung hash secara lokal membuat masukan tetap di perangkat Anda, sehingga Anda memperoleh digest yang dibutuhkan tanpa membuka apa yang Anda hash.
Enkoding Base64: pemetaan byte dan padding
Base64 menerjemahkan byte 8-bit menjadi karakter 6-bit dengan mengelompokkan tiga byte input (24 bit) menjadi empat nilai 6-bit. Setiap nilai 6-bit dipetakan ke karakter dalam alfabet Base64 (A-Z, a-z, 0-9, +, /). Karena prosesnya membutuhkan input yang habis dibagi 24 bit, input yang pendek diberi padding: satu byte tersisa menghasilkan dua karakter padding (==), dua byte tersisa menghasilkan satu (=). Varian Base64url, yang digunakan dalam JSON Web Tokens (JWT), mengganti + dengan - dan / dengan _ agar string aman untuk URL, serta menghilangkan padding = seluruhnya, karena karakter padding dapat menyebabkan kesalahan pada parser URI yang ketat. Mengenali perbedaan ini penting saat men-debug penanganan token: JWT yang tampak salah bentuk mungkin sekadar dikodekan dalam Base64url, bukan Base64 standar.
Tanda tangan JWT: HS256, RS256, dan kebingungan algoritma
Keamanan JSON Web Token sepenuhnya bergantung pada tanda tangannya, segmen ketiga yang dipisahkan tanda titik. Dengan HS256 (HMAC-SHA256), server menandatangani header dan payload yang dikodekan Base64url menggunakan kunci rahasia. Fungsi hash SHA-256 memberikan ketahanan tabrakan: secara komputasional tidak mungkin menghasilkan payload yang dimodifikasi yang menghasilkan hash tanda tangan yang sama tanpa mengetahui kunci rahasia. Dengan RS256, server menandatangani menggunakan kunci privat RSA dan memverifikasi dengan kunci publik. Kerentanan yang dikenal sebagai kebingungan algoritma muncul ketika library server tidak menerapkan jenis algoritma yang diharapkan secara ketat. Penyerang dapat mengubah kolom alg di header token dari RS256 ke HS256 dan menandatangani token menggunakan kunci publik server sebagai rahasia HMAC, karena kunci publik sering dapat diakses. Mendekode header JWT secara lokal di browser memungkinkan Anda memverifikasi algoritma mana yang sebenarnya ditentukan, tanpa mengekspos token aktif ke sistem logging pihak ketiga.
Alat dalam artikel ini
- Enkoder / Dekoder Base64Enkodekan atau dekodekan Base64, teks dan berkas. Tanpa unggah, 100% lokal.
- Enkoder / Dekoder URLEnkodekan atau dekodekan string URL dengan persen-enkoding. Tanpa unggah, 100% lokal.
- Dekoder JWTDekodekan JWT (header, payload, kedaluwarsa) tanpa mengirimkannya ke mana pun. Tanpa verifikasi tanda tangan.
- Generator HashBuat hash MD5, SHA-1, SHA-256, SHA-512 dari teks atau berkas. Tanpa unggah.
Pertanyaan yang sering diajukan
Apakah Base64 atau enkode URL merupakan bentuk keamanan?
Tidak. Keduanya adalah enkode yang dapat dibalik, dirancang untuk transport data yang aman, bukan untuk melindunginya. Siapa pun yang dapat membaca string terenkode mendekodenya seketika, tanpa kunci atau kata sandi. Jika Anda perlu menjaga sebuah nilai tetap rahasia, enkripsi dengan algoritme yang tepat dan kelola kuncinya secara terpisah. Perlakukan nilai apa pun dalam Base64 atau enkode persen seolah ditulis dalam teks biasa.
Mengapa penting di mana saya mendekode token atau menghitung hash kata sandi?
Karena masukanlah bagian yang sensitif. JWT yang sah adalah kredensial hidup, dan kata sandi yang Anda hash adalah rahasia sebenarnya. Alat berbasis server menerima masukan mentah itu bahkan sebelum mengembalikan hasil, yang berarti salinannya dapat dicatat di log atau disimpan di tempat yang tidak Anda lihat. Alat yang berjalan di peramban Anda melakukan operasi yang sama dalam memori di mesin Anda sendiri, jadi token atau kata sandi tidak pernah dikirim ke mana pun.