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!
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.
Jom mulakan!
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
Ini mewujudkan struktur asas untuk projek anda dengan Lithe.
Perisian tengah CSRF membantu menjana dan mengesahkan token CSRF. Untuk memasangnya, jalankan arahan berikut dalam terminal dalam projek anda:
composer require lithemod/csrf
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();
Dengan ini, perisian tengah CSRF aktif dalam aplikasi kami, dan setiap permintaan yang memerlukan perlindungan mesti menyertakan token yang sah.
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.
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> "); });
Apabila borang diserahkan, Lithe akan menyemak secara automatik sama ada token itu sah. Sekarang, mari buat laluan yang akan menerima dan memproses borang.
composer create-project lithephp/lithephp project-name cd project-name
Jika token tidak sah atau tiada, Lithe akan menyekat permintaan secara automatik dan mengembalikan ralat.
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.
Bagi mereka yang menggunakan JavaScript, berikut ialah contoh cara menghantar token dengan permintaan pengambilan:
composer require lithemod/csrf
Dalam tutorial ini, kami belajar:
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!