Perlindungan CSRF
Buat dan validasi token CSRF dalam formulir untuk mencegah permintaan palsu.
Perlindungan CSRF adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.
Apa itu CSRF?
Pemalsuan Permintaan Lintas Situs (CSRF) menipu pengguna yang telah diautentikasi agar mengirimkan tindakan yang tidak diinginkan. Halaman berbahaya mengirimkan permintaan palsu ke situs Anda menggunakan sesi aktif korban.
Cara Kerja CSRF
Skenario: Alice masuk ke bank.com. Ia mengunjungi malicious.com, yang memiliki formulir tersembunyi yang secara otomatis mengirimkan permintaan transfer ke bank.com menggunakan kuki sesinya.
Token CSRF
Pertahanannya adalah token rahasia per sesi yang disematkan di setiap formulir. Server memvalidasi token tersebut pada permintaan POST/PUT/PATCH/DELETE—permintaan palsu dari asal lain tidak dapat membaca token itu.
@csrf di Laravel Blade
Tambahkan direktif @csrf ke setiap formulir HTML yang mengubah data.
<form method="POST" action="/transfer">
@csrf
<input name="amount" type="number">
<button>Transfer</button>
</form>Middleware CSRF
Middleware VerifyCsrfToken Laravel memeriksa header X-CSRF-TOKEN atau bidang _token pada semua permintaan selain GET di dalam kelompok middleware web.
CSRF untuk AJAX
Untuk permintaan AJAX, baca token dari tag meta dan kirimkan sebagai header.
// In the HTML head:
<meta name="csrf-token" content="{{ csrf_token() }}">
// In JavaScript (Axios):
axios.defaults.headers.common["X-CSRF-TOKEN"] =
document.querySelector("meta[name=csrf-token]").content;Mengecualikan Rute
Rute API yang menggunakan token Sanctum biasanya dikecualikan dari perlindungan CSRF karena menggunakan autentikasi berbasis token, bukan kuki.
<?php
// In VerifyCsrfToken $except:
protected $except = [
"api/*",
"webhooks/*",
];Atribut Kuki SameSite
Mengatur SameSite=Strict atau Lax pada kuki sesi memberikan lapisan pertahanan CSRF tambahan di peramban modern.
Pola Pengiriman Ganda Kuki
Pertahanan CSRF alternatif untuk API: kirimkan token sebagai kuki dan header permintaan. Server memverifikasi bahwa keduanya cocok—permintaan lintas asal tidak dapat membaca kuki.
CSRF dalam Konteks API
API REST yang melakukan autentikasi dengan token Bearer, seperti Sanctum atau JWT, tidak rentan terhadap CSRF karena token disimpan di localStorage dan tidak dikirim secara otomatis oleh peramban.
Menguji CSRF
Pembantu pengujian Laravel secara otomatis menyertakan token CSRF. Anda juga dapat menguji bahwa permintaan POST yang tidak dilindungi ditolak.
<?php
// With token:
$this->post("/transfer", ["_token" => csrf_token(), "amount" => 100]);
// Simulating CSRF attack (no token):
$this->withoutMiddleware(VerifyCsrfToken::class)->post("/transfer", [...]);Ringkasan
Perlindungan CSRF memerlukan token tersembunyi di setiap formulir yang mengubah keadaan. Laravel menanganinya secara otomatis dengan @csrf. Untuk AJAX, tambahkan token sebagai header HTTP. Rute API yang menggunakan token Bearer tidak terpengaruh.
Pemeriksaan Cepat
Bagaimana cara menambahkan perlindungan CSRF ke formulir Laravel Blade?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Perlindungan CSRF” gratis?
Ya — teks lengkap “Perlindungan CSRF” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Perlindungan CSRF”?
Buat dan validasi token CSRF dalam formulir untuk mencegah permintaan palsu. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai PHP Academy?
Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Perlindungan CSRF” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?
Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Pencegahan Cross-Site Scripting (XSS)
- Injeksi SQL dan Kueri Berparameter
- Perlindungan CSRF
- Penyimpanan Kata Sandi yang Aman