Rumah >pembangunan bahagian belakang >tutorial php >Laravel Middleware: Lindungi aplikasi anda daripada serangan berniat jahat

Laravel Middleware: Lindungi aplikasi anda daripada serangan berniat jahat

WBOY
WBOYasal
2023-07-28 15:07:461281semak imbas

Laravel Middleware: Lindungi aplikasi anda daripada serangan berniat jahat

Pengenalan:
Dalam era Internet hari ini, ancaman keselamatan rangkaian semakin meningkat dari hari ke hari, dan pembangun perlu melindungi aplikasi mereka daripada serangan berniat jahat. Rangka kerja Laravel menyediakan mekanisme yang berkuasa, perisian tengah, untuk melindungi keselamatan aplikasi. Artikel ini akan memperkenalkan konsep middleware Laravel dan cara menulis serta menggunakan middleware untuk melindungi aplikasi anda.

1. Apakah itu middleware?
Middleware ialah penapis dalam rangka kerja Laravel yang digunakan untuk melakukan satu siri tindakan sebelum atau selepas permintaan sampai ke aplikasi. Ia boleh digunakan untuk menapis, mengesahkan atau mengubah suai permintaan dan respons, dengan itu meningkatkan keselamatan dan kebolehpercayaan aplikasi anda. Contohnya, anda boleh menggunakan middleware untuk mengesahkan identiti pengguna, menyemak kesahihan permintaan, merekodkan log, dsb.

2. Menulis middleware
Dalam Laravel, menulis middleware adalah sangat mudah. Pertama, kita perlu mencipta kelas perisian tengah. Anda boleh menggunakan perintah Artisan php artisan make:middleware untuk menjana templat kelas middleware. Sebagai contoh, jalankan arahan berikut untuk mencipta kelas middleware bernama CheckUserAgent: php artisan make:middleware来生成一个中间件类的模板。例如,运行以下命令来创建一个名为CheckUserAgent的中间件类:

php artisan make:middleware CheckUserAgent

当命令执行完毕后,我们得到了一个名为CheckUserAgent的中间件类位于app/Http/Middleware目录下。我们可以在这个类的handle方法中添加我们想要执行的操作,例如验证用户代理(User-Agent)是否合法。

namespace AppHttpMiddleware;

use Closure;

class CheckUserAgent
{
    public function handle($request, Closure $next)
    {
        // 获取请求的User-Agent
        $userAgent = $request->header('User-Agent');
        
        // 对User-Agent进行验证
        if ($userAgent !== 'MyApplication') {
            return response('Invalid User-Agent', 400);
        }
        
        return $next($request);
    }
}

在上面的示例中,我们获取了请求的User-Agent,并验证其是否等于MyApplication。如果验证失败,我们返回一个400错误响应;否则,我们继续执行下一个中间件或路由处理程序。

三、使用中间件
一旦我们编写好了中间件类,我们就可以将其应用到路由或控制器上了。在Laravel中,我们可以使用middleware方法将中间件应用到路由或路由组上。例如,我们可以将CheckUserAgent中间件应用到某个路由上:

Route::get('/api/private', function () {
    // 这里的请求将通过CheckUserAgent中间件的验证
})->middleware('CheckUserAgent');

我们还可以将中间件应用到路由组上,以同样的方式添加多个中间件。

Route::middleware(['CheckUserAgent', 'CheckPermissions'])->group(function () {
    // 这里的请求将依次通过CheckUserAgent和CheckPermissions中间件的验证
});

四、全局中间件
除了将中间件应用到某个路由或路由组上,我们还可以将中间件注册为全局中间件,以在每个请求到达应用程序之前执行。要注册一个全局中间件,我们需要将中间件类添加到应用程序的全局中间件列表中。打开app/Http/Kernel.php文件,找到$middleware

protected $middleware = [
    // ...
    AppHttpMiddlewareCheckUserAgent::class,
];

Apabila arahan selesai, kami mendapat kelas middleware bernama CheckUserAgent Terletak dalam direktori app/Http/Middleware. Kami boleh menambah operasi yang ingin kami lakukan dalam kaedah handle kelas ini, seperti mengesahkan sama ada ejen pengguna (User-Agent) adalah sah.

rrreee
Dalam contoh di atas, kami mendapat Ejen Pengguna yang diminta dan mengesahkan bahawa ia sama dengan MyApplication. Jika pengesahan gagal, kami mengembalikan respons ralat 400 jika tidak, kami meneruskan ke middleware atau pengendali laluan seterusnya.

🎜3. Gunakan middleware🎜Setelah kami menulis kelas middleware, kami boleh menggunakannya pada laluan atau pengawal. Dalam Laravel, kita boleh menggunakan kaedah middleware untuk menggunakan middleware pada laluan atau kumpulan laluan. Sebagai contoh, kita boleh menggunakan perisian tengah CheckUserAgent pada laluan: 🎜rrreee🎜 Kita juga boleh menggunakan perisian tengah pada kumpulan penghalaan dan menambah berbilang perisian tengah dengan cara yang sama. 🎜rrreee🎜4 Global middleware🎜Selain menggunakan middleware pada laluan atau kumpulan laluan tertentu, kami juga boleh mendaftarkan middleware sebagai middleware global untuk dilaksanakan sebelum setiap permintaan mencapai aplikasi. Untuk mendaftarkan middleware global, kita perlu menambah kelas middleware pada senarai middleware global aplikasi. Buka fail app/Http/Kernel.php, cari atribut $middleware dan tambah kelas middleware kami: 🎜rrreee🎜 5. Kesimpulan 🎜Middleware menyediakan cara yang mudah untuk melindungi aplikasi Laravel anda daripada serangan berniat jahat. Dengan menulis dan menggunakan perisian tengah, kami boleh menapis, mengesahkan dan mengubah suai permintaan dan respons, meningkatkan keselamatan dan kebolehpercayaan aplikasi kami. Saya harap artikel ini dapat membantu anda memahami konsep perisian tengah Laravel dan memberi anda beberapa panduan untuk mendapatkan aplikasi anda. 🎜

Atas ialah kandungan terperinci Laravel Middleware: Lindungi aplikasi anda daripada serangan berniat jahat. 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