Rumah > Artikel > pembangunan bahagian belakang > Cara menggunakan perisian tengah untuk mengendalikan pemalsuan permintaan merentas tapak (CSRF) dalam rangka kerja Slim
Cara menggunakan perisian tengah untuk mengendalikan pemalsuan permintaan merentas tapak (CSRF) dalam rangka kerja Slim
Pengenalan:
Pemalsuan Permintaan Silang Tapak (CSRF) ialah kaedah serangan rangkaian biasa Penyerang mengambil kesempatan daripada maklumat Pengesahan pengguna apabila tapak web berada log masuk, memaksa pengguna untuk melakukan permintaan berniat jahat. Untuk melindungi aplikasi daripada serangan CSRF, kami boleh menggunakan perisian tengah dalam rangka kerja Slim untuk mengendalikan isu CSRF. Artikel ini akan memperkenalkan cara menggunakan perisian tengah dalam rangka kerja Slim untuk menghalang serangan CSRF, dengan contoh kod yang sepadan.
Langkah 1: Pasang rangka kerja Slim
Mula-mula, kita perlu memasang rangka kerja Slim secara setempat. Dengan menggunakan Composer, anda boleh memasang rangka kerja Slim dan kebergantungan berkaitannya dengan mudah. Jalankan arahan berikut dalam terminal untuk mencipta projek Slim baharu:
composer create-project slim/slim my-app
Langkah 2: Cipta middleware CSRF
Rangka kerja Slim mempunyai mekanisme middleware (Middleware) terbina dalam, dan kami boleh mengendalikan CSRF dengan mencipta middleware. Dalam direktori akar projek, buat direktori baharu middlewares
dan buat fail bernama CsrfMiddleware.php
dalam direktori ini. Contoh kod adalah seperti berikut: middlewares
,并在该目录下创建一个名为CsrfMiddleware.php
的文件。代码示例如下:
<?php namespace AppMiddlewares; class CsrfMiddleware extends SlimMiddlewareAntiCsrf { public function call() { $this->app->hook('slim.before', [$this, 'check']); $this->next->call(); } public function validateStorage() { if (!$this->app->view()->getData('csrf_key') || !$this->app->view()->getData('csrf_value')) { $this->app->getLog()->error('CSRF validation error: missing CSRF key and/or value'); $this->app->pass(); } } }
步骤三:注册CSRF中间件
在Slim的应用程序设置中注册创建的中间件。打开项目的根目录下的index.php
$app = new SlimApp(); ... $app->add(new AppMiddlewaresCsrfMiddleware()); ... $app->run();Langkah 3: Daftar middleware CSRF
Daftar perisian tengah yang dibuat dalam tetapan aplikasi Slim. Buka fail index.php
dalam direktori akar projek dan tambahkan kod berikut pada tetapan aplikasi:
<form action="/submit" method="post"> <input type="hidden" name="csrf_key" value="{{ csrf_key }}"> <input type="hidden" name="csrf_value" value="{{ csrf_value }}"> <!-- 其他表单字段 --> <button type="submit">提交</button> </form>Langkah 4: Tambahkan token CSRF pada borang
Di mana perlindungan CSRF diperlukan Dalam borang, kita perlu menambah token CSRF. Ini boleh dicapai dengan menambahkan medan tersembunyi pada borang. Berikut ialah contoh kod:
$app->post('/submit', function ($request, $response) { $data = $request->getParsedBody(); // 获取请求参数 // 检查CSRF令牌 $csrf_key = $data['csrf_key']; $csrf_value = $data['csrf_value']; if (!$app->csrf->check($csrf_key, $csrf_value)) { // CSRF令牌验证失败 $response->getBody()->write('CSRF validation failed'); return $response->withStatus(403); } // 处理表单提交 // ... $response->getBody()->write('Form submitted successfully'); return $response; });Langkah Lima: Semak kesahihan token CSRF
Di bahagian pelayan, kami perlu mengesahkan sama ada token CSRF dalam permintaan yang diserahkan adalah sah. Berikut ialah kod untuk contoh fungsi pengendali laluan:
rrreee
Atas ialah kandungan terperinci Cara menggunakan perisian tengah untuk mengendalikan pemalsuan permintaan merentas tapak (CSRF) dalam rangka kerja Slim. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!