Laravel - Perlindungan CSRF
Hai, para pengembang yang sedang berkembang! Hari ini, kita akan mendalaminya dunia perlindungan CSRF di Laravel. Jangan khawatir jika Anda baru dalam programming; saya akan mengarahkan Anda langkah demi langkah, seperti yang saya lakukan untuk ribuan siswa dalam tahun-tahun mengajar saya. Mari kita memulai perjalanan yang menarik ini bersama!
Apa Itu CSRF?
Sebelum kita melompat ke implementasi Laravel, mari kita pahami apa itu CSRF. CSRF singkatan dari Cross-Site Request Forgery. Bayangkan Anda sedang di kafe, menikmati kopi Anda dan memeriksa rekening bank Anda di laptop. Tiba-tiba, seorang hacker yang nakal duduk di dekat Anda menipu browser Anda untuk membuat permintaan transfer uang dari rekening Anda ke rekening mereka. Itulah CSRF dalam aksi!
Mengapa Perlindungan CSRF Penting?
Serangan CSRF bisa sangat mematikan. Mereka dapat menyebabkan aksi yang tidak resmi dilakukan atas nama pengguna yang terotentik. Dalam konteks kafe, Anda bisa kehilangan uang Anda yang keras diperoleh! Itulah sebabnya kita memerlukan perlindungan CSRF, dan Laravel ada di pihak kita.
Implementasi Perlindungan CSRF Laravel
Laravel membuat hal ini sangat mudah untuk melindungi aplikasi Anda dari serangan CSRF. Mari kita jelajahi bagaimana cara kerjanya.
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 pengawal 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!
Menghapus 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 menghapus URL ini dengan menambahkannya ke array $except
di middleware VerifyCsrfToken
:
protected $except = [
'api/*',
'webhook/*',
];
Itu seperti memberikan pass VIP bagi beberapa orang 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 (gunakan jQuery sebagai contoh):
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
Itu seperti memberikan permintaan AJAX Anda tanda khusus yang mengatakan, "Saya diijinkan!"
X-XSRF-TOKEN
Laravel juga menyetel 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('CSRF token not found: 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 | Menyetel token CSRF di cookie untuk digunakan oleh kerangka kerja JavaScript |
Kesimpulan
Dan begitu saja, para ahli coding masa depan! Kita telah melintasi negeri perlindungan CSRF di Laravel. Ingat, melindungi aplikasi Anda sangat penting, dan Laravel membuatnya mudah sekali.
Seperti yang saya sering katakan kepada siswa saya, bayangkan perlindungan CSRF sebagai pengawal di klub paling hangat di kota. Itu memastikan bahwa hanya permintaan yang diijinkan yang dapat masuk, menjaga aplikasi Anda aman dari pengganggu pesta.
Tetap berlatih, tetap bersemangat, dan sebelum Anda tahu, Anda akan membuat aplikasi Laravel yang aman seperti seorang ahli! Selamat coding!
Credits: Image by storyset