CSRF (Cross-Site Request Forgery) adalah serangan yang bisa bikin aplikasi kamu bermasalah serius. Untungnya, kalau kamu pakai Laravel, framework PHP populer, kamu sudah punya banyak alat bawaan untuk melindungi aplikasi dari CSRF.

Yuk, kita lihat bagaimana cara menghajar CSRF di Laravel, langkah demi langkah, dengan bahasa yang sederhana!


🔍 Apa Itu CSRF?

Sederhananya, CSRF adalah trik jahat yang bikin browser pengguna mengirim permintaan palsu ke server—padahal si pengguna tidak bermaksud begitu. Kalau berhasil, penyerang bisa melakukan aksi berbahaya seperti mengubah data atau transaksi tanpa sepengetahuan korban.


🚀 Langkah 1: Pahami Middleware CSRF Laravel

Laravel secara default sudah menyediakan middleware CSRF protection bernama:

php
\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken::class

Middleware ini otomatis:

  • Membuat token unik untuk tiap sesi pengguna

  • Memeriksa token yang dikirim dalam permintaan POST, PUT, DELETE

  • Menolak permintaan kalau token tidak valid


📝 Langkah 2: Pastikan Form Punya Token CSRF

Saat membuat form di Blade (template engine Laravel), selalu sertakan:

blade
@csrf

Ini akan menyisipkan token CSRF otomatis di form kamu sebagai input tersembunyi.

Contoh form sederhana:

blade
<form action="/submit" method="POST">
@csrf
<input type="text" name="nama" />
<button type="submit">Kirim</button>
</form>

Kalau kamu lupa menambahkan @csrf, Laravel akan tolak permintaan form dengan error 419 (Page Expired).


⚙️ Langkah 3: CSRF untuk AJAX Request

Kalau kamu pakai AJAX (fetch atau axios) untuk kirim data, token CSRF harus ikut dikirim di header.

Biasanya, kamu bisa dapat token CSRF dari meta tag di Blade:

blade
<meta name="csrf-token" content="{{ csrf_token() }}">

Lalu di JavaScript:

javascript

const token = document.querySelector('meta[name="csrf-token"]').getAttribute('content');

fetch(‘/submit’, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
‘X-CSRF-TOKEN’: token
},
body: JSON.stringify({ nama: ‘Aditya’ })
});


🚫 Langkah 4: Kecualikan Route Jika Perlu

Kadang kamu punya endpoint API yang tidak butuh CSRF, misalnya endpoint untuk webhook atau API publik.

Kamu bisa mengecualikan route tertentu di middleware CSRF di:

php
protected $except = [
'webhook/*',
'api/public/*',
];

Tapi hati-hati! Jangan kecualikan route yang rawan diserang.


✅ Langkah 5: Testing dan Verifikasi

Setelah konfigurasi:

  • Coba kirim form dengan @csrf, harus berhasil

  • Coba kirim form tanpa token, harus gagal (error 419)

  • Cek juga request AJAX yang mengirim header X-CSRF-TOKEN

Kalau semuanya berjalan sesuai harapan, aplikasi kamu sudah terlindungi dari CSRF!


🧾 Kesimpulan

Laravel sudah sangat membantu melindungi aplikasi kamu dari serangan CSRF dengan fitur bawaannya.
Yang perlu kamu lakukan hanya:

  1. Selalu sertakan @csrf di form

  2. Kirim token CSRF di header untuk AJAX

  3. Hati-hati saat mengecualikan route dari proteksi CSRF

Dengan langkah-langkah ini, kamu sudah menghajar CSRF dan membuat aplikasi lebih aman!

Penulias : Muhammad Aditya Alkhawarizmi

Nim : 23156201023

jurusan : Sistem Komputer