Rumah > pembangunan bahagian belakang > tutorial php > Melindungi Aplikasi Anda dengan CSRF dalam Lithe

Melindungi Aplikasi Anda dengan CSRF dalam Lithe

Barbara Streisand
Lepaskan: 2024-11-11 01:36:03
asal
869 orang telah melayarinya

Protecting Your Application with CSRF in Lithe

Dalam tutorial ini, kami akan mempelajari cara melaksanakan perlindungan CSRF (Cross-Site Request Forgery) dalam Lithe untuk mengelakkan permintaan yang tidak diingini daripada dibuat pada permohonan anda. Panduan ini direka untuk pemula, jadi kami akan pergi langkah demi langkah!


Apakah CSRF?

CSRF, atau Pemalsuan Permintaan Merentas Tapak, ialah sejenis serangan di mana pengguna ditipu untuk melaksanakan tindakan yang tidak dibenarkan pada tapak web yang mereka disahkan. Serangan ini berbahaya kerana penyerang boleh memanipulasi data atau mengakses kawasan larangan. Untuk mengelakkan ini, kami menambah lapisan keselamatan yang menghentikan permintaan yang mencurigakan daripada diproses.


Struktur Tutorial

  1. Sediakan Lithe
  2. Pasang CSRF Middleware
  3. Tambah Token CSRF di Bahagian Belakang
  4. Sahkan Token di Bahagian Belakang
  5. Hantar Token dari Frontend
  6. Uji Perlindungan CSRF

Jom mulakan!


Langkah 1: Menyediakan Lithe

Jika anda belum menyediakan Lithe lagi, mulakan dengan memasang rangka kerja dengan arahan di bawah:

composer create-project lithephp/lithephp project-name
cd project-name
Salin selepas log masuk
Salin selepas log masuk

Ini mewujudkan struktur asas untuk projek anda dengan Lithe.


Langkah 2: Memasang CSRF Middleware

Perisian tengah CSRF membantu menjana dan mengesahkan token CSRF. Untuk memasangnya, jalankan arahan berikut dalam terminal dalam projek anda:

composer require lithemod/csrf
Salin selepas log masuk
Salin selepas log masuk

Langkah 3: Mengkonfigurasi CSRF Middleware

Sekarang, kami perlu memberitahu Lithe bahawa kami ingin menggunakan perisian tengah CSRF. Buka fail utama src/App.php dan tambah perisian tengah CSRF.

use Lithe\Middleware\Security\csrf;
use function Lithe\Orbis\Http\Router\router;

$app = new \Lithe\App;

// Configure the CSRF middleware with automatic checking in the request body
$app->use(csrf([
    'expire' => 600, // Token expiration after 10 minutes
    'checkBody' => true, // Enables automatic checking in the body
    'bodyMethods' => ['POST', 'PUT', 'DELETE'], // Defines the methods for checking CSRF in the body
]));

$app->use(router(__DIR__ . '/routes/web'));

$app->listen();
Salin selepas log masuk

Dengan ini, perisian tengah CSRF aktif dalam aplikasi kami, dan setiap permintaan yang memerlukan perlindungan mesti menyertakan token yang sah.


Langkah 4: Menjana Token CSRF

Untuk menggunakan perlindungan CSRF, kami perlu menjana token unik dan memasukkannya ke dalam permintaan. Kami akan membuat laluan untuk menghantar borang yang menyertakan token CSRF secara automatik.

  1. Buat fail bernama src/routes/web.php, dan tambah laluan borang dengan medan untuk token CSRF.
use Lithe\Http\{Request, Response};
use function Lithe\Orbis\Http\Router\get;

get('/form', function (Request $req, Response $res) {
    // Generate the CSRF token field
    $tokenField = $req->csrf->getTokenField();

    // Send the HTML with the token included in the form
    return $res->send("
        <form method='POST' action='/submit'>
            $tokenField
            <input type='text' name='data' placeholder='Type something' required>
            <button type='submit'>Submit</button>
        </form>
    ");
});
Salin selepas log masuk
  1. Laluan ini mencipta borang yang merangkumi medan token CSRF. Medan adalah wajib untuk Lithe menyemak kesahihan permintaan.

Langkah 5: Mengesahkan Token pada Bahagian Belakang

Apabila borang diserahkan, Lithe akan menyemak secara automatik sama ada token itu sah. Sekarang, mari buat laluan yang akan menerima dan memproses borang.

  1. Dalam fail yang sama src/routes/web.php, tambahkan laluan untuk memproses penyerahan borang.
composer create-project lithephp/lithephp project-name
cd project-name
Salin selepas log masuk
Salin selepas log masuk

Jika token tidak sah atau tiada, Lithe akan menyekat permintaan secara automatik dan mengembalikan ralat.


Langkah 6: Menghantar Permintaan dengan Token CSRF

Pada bahagian hadapan, apabila anda perlu menghantar permintaan POST (atau kaedah pengubahsuaian data lain), adalah penting untuk memasukkan token CSRF dalam kandungan permintaan atau dalam pengepala, bergantung pada cara anda mengkonfigurasi perisian tengah anda.

Contoh dengan API Ambil JavaScript

Bagi mereka yang menggunakan JavaScript, berikut ialah contoh cara menghantar token dengan permintaan pengambilan:

composer require lithemod/csrf
Salin selepas log masuk
Salin selepas log masuk

Langkah 7: Menguji Perlindungan CSRF

  1. Akses laluan /form dalam penyemak imbas anda. Anda akan melihat borang dengan token CSRF disertakan.
  2. Isi medan dan serahkan borang.
  3. Jika semuanya berfungsi, anda akan melihat mesej kejayaan dengan data yang dihantar.

Ringkasan dan Pertimbangan Akhir

Dalam tutorial ini, kami belajar:

  • Apakah CSRF dan sebab ia penting.
  • Cara untuk menyediakan perisian tengah CSRF dalam Lithe.
  • Cara menjana dan mengesahkan token CSRF pada bahagian belakang.
  • Cara menghantar token CSRF dengan borang dan permintaan AJAX.

Dengan perlindungan ini dilaksanakan, anda menjadikan aplikasi anda lebih selamat daripada serangan CSRF, membantu melindungi integriti data pengguna anda.

Untuk maklumat lebih terperinci, lihat Dokumentasi Lithe rasmi.

Atas ialah kandungan terperinci Melindungi Aplikasi Anda dengan CSRF dalam Lithe. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan