Banyak developer menggunakan token CSRF untuk melindungi aplikasi web dari serangan berbahaya. Tapi⦠pertanyaannya:
Apakah cukup menggunakan HMAC (Hash-based Message Authentication Code) untuk membuat token yang benar-benar kuat?
Artikel ini akan membahas apa itu HMAC, bagaimana digunakan untuk token CSRF, dan apakah benar-benar cukup kuat untuk melawan serangan. Kita bahas dengan bahasa yang sederhana, yuk!
š§ Apa Itu HMAC?
HMAC adalah metode untuk membuat tanda tangan digital (hash) dari sebuah pesan, dengan menggabungkan pesan dan kunci rahasia.
Contoh:
Jika ada yang mengubah isi pesan atau tidak tahu kuncinya, maka hasil HMAC-nya akan berbeda.
Inilah alasan kenapa HMAC sering dipakai untuk keamanan ā termasuk membuat CSRF token.
šÆ Tujuan CSRF Token
CSRF token bertugas untuk:
-
Memastikan bahwa permintaan benar-benar dari pengguna asli
-
Mencegah situs jahat mengirim permintaan palsu dengan menyamar sebagai pengguna
š§ Cara Menggunakan HMAC untuk CSRF Token
Misalnya kamu membuat token CSRF seperti ini:
-
session_id()adalah identitas sesi pengguna -
$secret_keyadalah kunci rahasia server
Saat permintaan datang, server tinggal menghitung ulang token dan membandingkan hasilnya.
Kalau cocok ā permintaan valid.
ā Keunggulan HMAC Token
| Keunggulan | Penjelasan |
|---|---|
| š Aman dari tebakan | Karena token dibuat dari secret key |
| š§® Mudah diverifikasi | Server tinggal hitung ulang token |
| š« Tidak bisa dimanipulasi | Kalau diubah sedikit, hasil hash-nya berubah total |
| ā Tidak perlu simpan token | Bisa digenerate ulang dari data sesi |
ā ļø Tapi⦠Apakah Ini Saja Sudah Cukup?
Jawaban singkat: Cukup, kalau digunakan dengan benar
Tapi ada beberapa hal penting yang harus diperhatikan:
ā Hal yang Perlu Diwaspadai
1. Token Harus Unik Per Sesi
Jangan buat token yang bisa digunakan oleh banyak user. Harus benar-benar terkait dengan sesi pengguna.
2. Token Harus Tersembunyi
Token harus dikirim lewat form (hidden input) atau header request ā bukan lewat URL, karena bisa dicuri dari log.

3. Validasi HMAC-nya Harus Ketat
Gunakan fungsi seperti hash_equals() untuk mencegah serangan timing attack:
4. Hindari Token yang Tidak Kedaluwarsa
Idealnya, token punya batas waktu. Misalnya hanya aktif selama sesi pengguna hidup, atau selama 30 menit.
š Perbandingan: HMAC vs. Random Token
| Fitur | HMAC Token | Random Token |
|---|---|---|
| Perlu disimpan? | Tidak | Ya (di session/server) |
| Bisa dicek ulang? | Ya (pakai rumus HMAC) | Ya, tapi harus dicocokkan manual |
| Lebih aman? | Sama-sama aman (kalau diterapkan dengan benar) | |
| Mudah dikelola? | HMAC lebih ringan karena tidak simpan data |
š§¾ Kesimpulan
HMAC adalah metode yang kuat dan efisien untuk membuat token CSRF,
asalkan:
-
Token benar-benar unik per pengguna
-
Dikirim secara aman (tidak lewat URL)
-
Divalidasi dengan benar di server
-
Tidak disalahgunakan (misal, dibagikan ke public)
Jadi, apakah HMAC cukup kuat untuk lawan CSRF?
ā YA, asal digunakan dengan cara yang benar.

Penulias : Muhammad Aditya Alkhawarizmi
Nim : 23156201023
jurusan : Sistem Komputer









