APA ITU CSRF LARAVEL
Cross-site request forgeries (CSRF) adalah jenis serangan yang dilakukan oleh penyerang untuk mengirim permintaan ke suatu sistem dengan bantuan pengguna resmi yang dipercaya oleh sistem.Atau juga CSRF sendiri adalah cross site request forgery, apa maksudnya nih?? Maksudnya adalah csrf ini merupakan salah satu lubang di web app yang bekerja dengan cara mengeksploitasi suatu aksi dan eksploitasi ini memanfaatkan otentikasi milik salah satu user.
Laravel memberikan perlindungan dengan serangan CSRF dengan menghasilkan token CSRF. Token CSRF ini dihasilkan secara otomatis untuk setiap pengguna. Token ini tidak lain adalah string acak yang dikelola oleh aplikasi Laravel untuk memverifikasi permintaan pengguna.
Cara Memakai
Laravel CSRF in Forms
<form method="POST">
@csrf // Generate hidden input field
.....
.....
</form><form method="POST">
// Generate hidden input field
{{ csrf_field() }}
.....
.....
</form><form method="POST">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
.....
.....
</form>
Handling Laravel CSRF when Using Axios
let 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');
}
Laravel CSRF Token Ajax Calls
$.ajax({
type: "POST",
data: {"_token": "{{ csrf_token() }}","id": id},
url: some_url,
success: function(msg){
// response
}
});
Ajax Headers
$.ajaxSetup({ headers: { 'csrftoken' : '{{ csrf_token() }}' } });
Laravel CSRF Custom Header Posts
<script> var _token = '<?php echo csrf_token(); ?>'; </script>
CSRF Filter
Route::filter('csrf', function()
{
if (Request::ajax())
{
if (Session::token() !== Request::header('csrftoken'))
{
// Change this to return something your JavaScript can read...
throw new Illuminate\Session\TokenMismatchException;
}
}
elseif (Session::token() !== Input::get('_token'))
{
throw new Illuminate\Session\TokenMismatchException;
}
});
Excluding URIs From CSRF Protection
<?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 = [
'stripe/*',
'http://example.com/foo/bar',
'http://example.com/foo/*',
];
}
Komentar
Posting Komentar