CSRF TOKEN

    -Apa itu CSRF token?

CSRF Token adalah nilai unik, dan tidak terduga yang dihasilkan oleh server side application dan dikirimkan ke klien sehingga disertakan dengan HTTP Request (Permintaan HTTP). Saat permintaan selanjutnya dibuat, aplikasi sisi server memvalidasi bahwa permintaan tersebut menyertakan token yang diharapkan dan menolak permintaan jika token tidak ada atau tidak valid.

CSRF Token juga dapat mencegah serangan CSRF (CSRF ATTACK) dengan membuat penyerang tidak mungkin membuat permintaan HTTP yang sepenuhnya valid yang cocok untuk diumpankan ke pengguna korban. Karena penyerang tidak dapat menentukan atau memprediksi nilai token CSRF pengguna, mereka tidak dapat membuat permintaan dengan semua parameter yang diperlukan aplikasi untuk memenuhi permintaan tersebut.

    -Bagaimana cara membuat CSRF Token?

CSRF Token harus berisi entropi yang signifikan dan sangat tidak terduga, dengan properti yang sama seperti token sesi pada umumnya.

 
Anda harus menggunakan kekuatan kriptografi Pseudo-Random Number Generator (PRNG), yang diunggulkan dengan stempel waktu saat dibuat plus rahasia statis.

 
Jika Anda memerlukan jaminan lebih lanjut di luar kekuatan PRNG, Anda dapat menghasilkan token individual dengan menggabungkan outputnya dengan beberapa entropi khusus pengguna dan mengambil hash yang kuat dari seluruh struktur. Ini menghadirkan penghalang tambahan bagi penyerang yang mencoba menganalisis token berdasarkan sampel yang diberikan kepada mereka.

    -Bagaimana CSRF Token ditransmisikan?

CSRF Token harus diperlakukan sebagai rahasia dan ditangani dengan cara yang aman sepanjang siklus hidupnya. Pendekatan yang biasanya efektif adalah mengirimkan token ke klien dalam bidang tersembunyi dari formulir HTML yang dikirimkan menggunakan metode POST. Token kemudian akan dimasukkan sebagai parameter permintaan saat formulir dikirimkan:

<input type="hidden" name="csrf-token" value="CIwNZNlR4XbisJF39I8yWnWX9wX4WFoz" />


Untuk keamanan tambahan, bidang yang berisi token CSRF harus ditempatkan sedini mungkin di dalam dokumen HTML, idealnya sebelum bidang input yang tidak tersembunyi dan sebelum lokasi mana pun di mana data yang dapat dikontrol pengguna disematkan di dalam HTML. Ini mengurangi berbagai teknik di mana penyerang dapat menggunakan data yang dibuat untuk memanipulasi dokumen HTML dan menangkap bagian dari isinya.

    -Bagaimana CSRF Token divalidasi?

Ketika CSRF Token dibuat, itu harus disimpan di sisi server (Side Server) dalam data sesi pengguna. Ketika permintaan berikutnya diterima yang memerlukan validasi, aplikasi sisi server harus memverifikasi bahwa permintaan tersebut menyertakan token yang cocok dengan nilai yang disimpan dalam sesi pengguna. Validasi ini harus dilakukan terlepas dari metode HTTP atau tipe konten permintaan. Jika permintaan tidak mengandung token sama sekali, permintaan tersebut harus ditolak dengan cara yang sama seperti saat ada token yang tidak valid.