Laravel - Perlindungan CSRF
Hai, para pengembang muda! Hari ini, kita akan mempelajari dunia perlindungan CSRF di Laravel. Jangan khawatir jika Anda baru dalam pemrograman; saya akan mengajarkan Anda secara langkah demi langkah, seperti yang saya lakukan bagi ribuan murid selama tahun-tahun mengajar saya. Mari kita mulai perjalanan menarik ini bersama!
Apa Itu CSRF?
Sebelum kita melompat ke implementasi Laravel, mari kita mengerti apa itu CSRF. CSRF singkatan dari Cross-Site Request Forgery. Bayangkan Anda di sebuah kedai kopi, menikmati kopi latte dan memeriksa rekening bank Anda di laptop. Tiba-tiba, seorang hacker jahat yang duduk di dekat Anda menipu browser Anda untuk membuat permintaan transfer uang dari rekening Anda ke rekening mereka. Itu CSRF dalam aksi!
Mengapa Perlindungan CSRF Penting?
Serangan CSRF bisa sangat mematikan. Mereka dapat menyebabkan tindakan yang tidak resmi dilakukan atas nama pengguna yang terotentikasi. Dalam skenario kedai kopi, Anda bisa kehilangan uang Anda yang keras-kerja! Itulah mengapa kita butuh perlindungan CSRF, dan Laravel mendukung kita.
Implementasi Perlindungan CSRF Laravel
Laravel membuatnya sangat mudah untuk melindungi aplikasi Anda dari serangan CSRF. Mari kita jelajahi bagaimana hal itu bekerja.
Token CSRF
Pusat dari perlindungan CSRF Laravel adalah token unik. Bayangkan token ini sebagai salam rahasia antara aplikasi Anda dan browser pengguna.
Berikut cara Anda menyertakan token ini di formulir Anda:
<form method="POST" action="/profile">
@csrf
...
</form>
Petunjuk @csrf
menghasilkan field input tersembunyi dengan token CSRF. Itu seperti memberikan formulir Anda sandi rahasia!
Middleware Verifikasi CSRF
Laravel menggunakan middleware untuk memverifikasi token CSRF untuk setiap permintaan POST, PUT, PATCH, atau DELETE. Itu seperti memiliki penjaga keamanan yang memeriksa ID di pintu masuk klub.
Berikut adalah penampilan middleware di belakang layar:
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
//
];
}
Middleware ini secara otomatis diterapkan ke semua rute web. Itu seperti memiliki perisai tak terlihat yang melindungi aplikasi Anda!
Menyertakan URL dari Perlindungan CSRF
kadang-kadang, Anda mungkin ingin membiarkan URL tertentu melewati perlindungan CSRF. Misalnya, jika Anda sedang membuat API yang akan digunakan oleh aplikasi lain. Anda dapat menyertakan URL ini ke dalam array $except
di middleware VerifyCsrfToken
:
protected $except = [
'api/*',
'webhook/*',
];
Itu seperti memberikan VIP tertentu pass untuk melewati pemeriksaan keamanan di pintu masuk klub kami.
X-CSRF-TOKEN
Untuk permintaan AJAX, Laravel memungkinkan Anda mengirim token CSRF dalam header HTTP khusus X-CSRF-TOKEN
. Berikut cara Anda mengaturnya:
<meta name="csrf-token" content="{{ csrf_token() }}">
Lalu, di JavaScript Anda (menggunakan jQuery sebagai contoh):
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
Itu seperti memberikan permintaan AJAX Anda badge khusus yang mengatakan, "Saya berwenang!"
X-XSRF-TOKEN
Laravel juga menempatkan token CSRF di cookie bernama XSRF-TOKEN
. Banyak kerangka kerja JavaScript, seperti Angular, secara otomatis menggunakan cookie ini.
Jika Anda tidak menggunakan kerangka kerja ini, Anda dapat mengirim token secara manual:
var token = document.head.querySelector('meta[name="csrf-token"]');
if (token) {
window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
} else {
console.error('Token CSRF tidak ditemukan: https://laravel.com/docs/csrf#csrf-x-csrf-token');
}
Itu seperti memberikan aplikasi Anda cincin dekoder rahasia untuk memverifikasi permintaan!
Metode Perlindungan CSRF
Berikut adalah tabel yang menggabungkan metode perlindungan CSRF yang kita diskusikan:
Metode | Deskripsi |
---|---|
@csrf directive | Menghasilkan field input tersembunyi dengan token CSRF |
VerifyCsrfToken middleware | Secara otomatis memverifikasi token CSRF untuk permintaan POST, PUT, PATCH, DELETE |
X-CSRF-TOKEN header | Memungkinkan pengiriman token CSRF dalam header HTTP khusus untuk permintaan AJAX |
XSRF-TOKEN cookie | Menempatkan token CSRF di cookie untuk digunakan oleh kerangka kerja JavaScript |
Kesimpulan
Dan itu adalah dia, para ahli coding masa depan! Kita telah berpergian melalui dunia perlindungan CSRF di Laravel. Ingat, melindungi aplikasi Anda sangat penting, dan Laravel membuatnya lebih mudah daripada yang biasa.
Seperti yang saya selalu katakan kepada murid-murid saya, berpikirlah CSRF protection sebagai penjaga di klub paling hangat di kota. Itu memastikan bahwa hanya permintaan yang resmi yang lolos, menjaga aplikasi Anda aman dari pelanggar pesta yang jahat.
Terus latih, tetap curiga, dan sebelum Anda tahu, Anda akan membuat aplikasi Laravel aman seperti seorang ahli! Selamat coding!
Credits: Image by storyset