Mengenal CSRF Protection Pada Laravel 5.8

joesep 2019-09-05 61

#Introduction

Laravel memudahkan melindungi aplikasi Anda dari serangan lintas situs pemalsuan (CSRF). Pemalsuan permintaan lintas situs adalah jenis eksploit berbahaya di mana perintah yang tidak sah dilakukan atas nama pengguna yang diautentikasi.

Laravel secara otomatis menghasilkan "token" CSRF untuk setiap sesi pengguna aktif yang dikelola oleh aplikasi. Token ini digunakan untuk memverifikasi bahwa pengguna yang diautentikasi adalah yang benar-benar membuat permintaan ke aplikasi.

Setiap kali Anda mendefinisikan formulir HTML dalam aplikasi Anda, Anda harus menyertakan bidang token CSRF tersembunyi dalam formulir sehingga middleware perlindungan CSRF dapat memvalidasi permintaan. Anda dapat menggunakan @csrf arahan Blade untuk menghasilkan bidang token:

<form method="POST" action="/profile">
    @csrf
    ...
</form>

The VerifyCsrfToken middleware , yang termasuk dalam web kelompok middleware, otomatis akan memverifikasi bahwa token pada input permintaan cocok token disimpan dalam sesi.

 

JavaScript CSRF & Token

Saat membuat aplikasi yang digerakkan oleh JavaScript, akan lebih mudah untuk memiliki pustaka HTTP JavaScript Anda secara otomatis melampirkan token CSRF ke setiap permintaan keluar. Secara default, file mendaftarkan nilai tag meta dengan perpustakaan HTTP Axios. Jika Anda tidak menggunakan perpustakaan ini, Anda harus mengkonfigurasi perilaku ini secara manual untuk aplikasi Anda. resources/js/bootstrap.jscsrf-token

 

#Excluding URIs From CSRF Protection

Terkadang Anda mungkin ingin mengecualikan serangkaian URI dari perlindungan CSRF. Misalnya, jika Anda menggunakan Stripe untuk memproses pembayaran dan menggunakan sistem webhook mereka, Anda harus mengecualikan route handhook handler Stripe Anda dari perlindungan CSRF karena Stripe tidak akan tahu apa tanda CSRF untuk dikirim ke rute Anda.

Biasanya, Anda harus menempatkan rute semacam ini di luar webgrup middleware yang RouteServiceProvider berlaku untuk semua route dalam file. Namun, Anda juga dapat mengecualikan rute dengan menambahkan URI mereka ke properti middleware: routes/web.php$exceptVerifyCsrfToken

<?php

namespace AppHttpMiddleware;

use IlluminateFoundationHttpMiddlewareVerifyCsrfToken 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/*',
    ];
}

 

#X-CSRF-TOKEN

Selain memeriksa token CSRF sebagai parameter POST, VerifyCsrfToken middleware juga akan memeriksa header permintaan. Misalnya, Anda dapat menyimpan token dalam tag HTML :X-CSRF-TOKENmeta

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

Kemudian, setelah Anda membuat meta tag, Anda dapat menginstruksikan perpustakaan seperti jQuery untuk secara otomatis menambahkan token ke semua header permintaan. Ini memberikan perlindungan CSRF yang sederhana dan nyaman untuk aplikasi berbasis AJAX Anda:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

 

 
Secara default, file mendaftarkan nilai tag meta dengan perpustakaan HTTP Axios. Jika Anda tidak menggunakan perpustakaan ini, Anda harus mengkonfigurasi perilaku ini secara manual untuk aplikasi Anda. resources/js/bootstrap.jscsrf-token

 

#X-XSRF-TOKEN

Laravel menyimpan token CSRF saat ini dalam cookie yang disertakan dengan setiap respons yang dihasilkan oleh kerangka kerja. Anda dapat menggunakan nilai cookie untuk mengatur tajuk permintaan. XSRF-TOKENX-XSRF-TOKEN

Cookie ini terutama dikirim sebagai kenyamanan karena beberapa kerangka kerja JavaScript dan perpustakaan, seperti Angular dan Axios, secara otomatis menempatkan nilainya di header. X-XSRF-TOKEN

Rekomendasi Artikel


Terbaru dari framework Laravel



Search


Top Stories


  1. Membuat Perulangan Segitiga Bintang Dengan PHP

    on 2018-01-12

  2. Membatasi Jumlah Karakter dengan PHP

    on 2018-01-23

  3. Kenapa Telinga Gatal dan Berair

    on 2018-04-13

  4. Membuat Tanggal dan Zona Waktu Sederhana dengan PHP

    Admin on 2017-11-26

  5. Membuat Paragraf Otomatis dengan Script PHP

    on 2018-01-26

Other Post


Top Videos


  1. Founder SB1M dan Pemilik Distro BLOOP ini BANGKIT dari BANGKRUT 16x dan HUTANG 11M | Christina Lie

    joesep on 2019-06-04

  2. vivo Z1 Pro VS OPPO A9 2020 | Duel HP 3 Jutaan Terbaik 2019!

    joesep on 2019-09-26

  3. FILM Horor Terbaru "SABRINA THE DOLL 2" Full Movie 2018

    Andri03 on 2018-08-01

  4. Sandiaga Uno Resmi Mundur dari Ketua Tim Pemenangan Partai Gerindra

    joesep on 2018-07-31

  5. Aplikasi Kasir Point of Sale Restoran / Kafe Berbasis WEB

    joesep on 2018-08-15

close