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

PHPz
PHPzasal
2023-07-28 15:13:28821semak imbas

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

Ringkasan: 🎜 Dengan menggunakan mekanisme middleware dalam rangka kerja Slim, kami boleh melaksanakan perlindungan CSRF dengan mudah dalam aplikasi kami. Cipta perisian tengah CSRF untuk mengesahkan dan mengendalikan token CSRF, kemudian tambahkan token CSRF pada borang untuk menjamin permintaan pengguna. Di atas ialah kaedah dan contoh kod untuk mengendalikan CSRF dalam rangka kerja Slim. Harap artikel ini dapat membantu anda! 🎜

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!

Kenyataan:
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