Dalam tutorial ini, kami akan mempelajari cara melaksanakan perlindungan CSRF (Cross-Site Request Forgery) dalam Lithe, untuk mengelakkan permintaan yang tidak diingini daripada dibuat dalam aplikasi anda. Panduan ini direka untuk pemula, jadi mari kita pergi dalam bahagian!
CSRF, atau Pemalsuan Permintaan Merentas Tapak, ialah sejenis serangan di mana pengguna ditipu untuk melakukan tindakan yang tidak dibenarkan pada tapak web yang mana mereka disahkan. Serangan ini berbahaya kerana penyerang boleh memanipulasi data atau mengakses kawasan larangan. Untuk mengelakkan ini, kami menambah lapisan keselamatan yang menghalang permintaan yang mencurigakan daripada diproses.
Jom mulakan!
Jika anda belum mempunyai konfigurasi Lithe, mulakan dengan memasang rangka kerja dengan arahan di bawah:
composer create-project lithephp/lithephp nome-do-projeto cd nome-do-projeto
Ini mewujudkan struktur asas untuk projek Lithe anda.
Perisian tengah CSRF membantu menjana dan mengesahkan token CSRF. Untuk memasang, 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; // Configura o middleware CSRF com verificação automática no corpo da requisição $app->use(csrf([ 'expire' => 600, // Expiração do token após 10 minutos 'checkBody' => true, // Habilita a verificação automática no corpo 'bodyMethods' => ['POST', 'PUT', 'DELETE'], // Define os métodos para verificar o CSRF no corpo ])); $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 dalam permintaan. Mari buat laluan untuk menyerahkan 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) { // Gera o campo de token CSRF $tokenField = $req->csrf->getTokenField(); // Envia o HTML com o token incluído no formulário return $res->send(" <form method='POST' action='/submit'> $tokenField <input type='text' name='data' placeholder='Digite algo' required> <button type='submit'>Enviar</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 nome-do-projeto cd nome-do-projeto
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 perubahan data lain), adalah penting untuk memasukkan token CSRF dalam badan permintaan atau 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 kita belajar:
Dengan perlindungan ini disediakan, anda menjadikan aplikasi anda lebih selamat daripada serangan CSRF, membantu melindungi integriti data pengguna anda.
Untuk maklumat lebih terperinci, lihat Dokumentasi Rasmi Lithe.
Atas ialah kandungan terperinci Melindungi Aplikasi anda dengan CSRF pada Lithe. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!