Rumah  >  Artikel  >  rangka kerja php  >  laravel keluarkan csrf

laravel keluarkan csrf

WBOY
WBOYasal
2023-05-29 09:57:071006semak imbas

Laravel ialah rangka kerja PHP popular yang telah menjadi pilihan popular di kalangan pembangun profesional dan pemula. Rangka kerja Laravel melaksanakan perlindungan CSRF untuk mengelakkan serangan pemalsuan permintaan merentas tapak. Walau bagaimanapun, dalam beberapa kes, kadangkala perlu untuk mengalih keluar perlindungan CSRF Artikel ini akan menunjukkan kepada anda cara untuk mengalih keluar perlindungan CSRF dalam Laravel.

  1. Apakah itu Perlindungan CSRF

Pemalsuan permintaan merentas tapak, disingkatkan sebagai CSRF dalam bahasa Inggeris, ialah serangan web biasa. Penyerang menggunakan identiti mangsa dalam keadaan log masuk untuk memalsukan permintaan untuk mencapai operasi berniat jahat. Untuk mengelakkan serangan seperti ini, Laravel melaksanakan fungsi perlindungan CSRF, yang boleh melindungi aplikasi web dengan baik.

  1. Pelaksanaan perlindungan CSRF dalam Laravel

Pelaksanaan perlindungan CSRF dalam Laravel terutamanya melibatkan tiga langkah berikut:

2.1 🎜>

Tambah arahan csrf_field dalam borang HTML Arahan ini akan menjana token CSRF secara automatik dan menambahkannya ke medan tersembunyi borang.

<form>
@csrf
<input type="text" name="name">
<input type="submit" value="Submit">
</form>

2.2. Sahkan token CSRF

Di bahagian belakang, Laravel akan mengesahkan sama ada token CSRF yang diminta adalah sah. Jika ia menyalahi undang-undang, mesej ralat akan dikembalikan. Dalam Laravel 5.6 dan versi yang lebih baru, perisian tengah perlindungan CSRF ditambahkan secara lalai, dan semua permintaan Pos akan menjalani pengesahan CSRF. Jika permintaan anda tidak membawa token CSRF dengan betul, anda akan mendapat mesej ralat berikut:

TokenMismatchException in VerifyCsrfToken.php line 68:

2.3 Perlindungan serangan skrip merentas tapak

Untuk mengelakkan serangan skrip merentas tapak, anda harus mengikut prinsip "Escape" "Output", jangan keluarkan secara langsung data yang disediakan oleh pengguna, tetapi harus memprosesnya sebelum mengeluarkannya. Contohnya, gunakan fungsi htmlentities atau htmlspecialchars untuk melepaskan aksara khas HTML.

Di atas ialah cara melaksanakan perlindungan CSRF dalam Laravel. Di bawah kami akan menerangkan cara mengalih keluar perlindungan ini.

    Cara mengalih keluar perlindungan CSRF dalam Laravel
Jika aplikasi web anda tidak memerlukan perlindungan CSRF, anda juga boleh mengalih keluar perlindungan CSRF dalam Laravel. Di bawah ini kami akan memperkenalkan dua kaedah untuk mengalih keluar perlindungan CSRF.

3.1. Matikan perisian tengah perlindungan CSRF

Secara lalai, semua permintaan Laravel Post akan menjalani pengesahan CSRF. Jika anda ingin mengalih keluar pengesahan ini, anda boleh mengalih keluar middleware perlindungan CSRF daripada Middleware. Kaedah khusus adalah seperti berikut:

Buka fail app/Http/Kernel.php, cari kumpulan middleware web dalam tatasusunan $middlewareGroups dan padamkan perisian tengah ['IlluminateFoundationHttpMiddlewareVerifyCsrfToken'] daripada tatasusunan.

protected $middlewareGroups = [
    'web' => [
        AppHttpMiddlewareEncryptCookies::class,
        // IlluminateSessionMiddlewareAuthenticateSession::class,
        // IlluminateRoutingMiddlewareSubstituteBindings::class,
        // IlluminateFoundationHttpMiddlewareVerifyCsrfToken::class,
    ],

    'api' => [
        'throttle:60,1',
        'auth:api',
    ],
];

Pada masa ini, semua permintaan Pos tidak akan disahkan untuk perlindungan CSRF. Walaupun perlindungan CSRF boleh dialih keluar, ini juga mewakili risiko keselamatan tertentu. Oleh itu, adalah disyorkan untuk hanya mendayakannya dalam persekitaran ujian yang ketat.

3.2 Abaikan perlindungan CSRF secara manual

Jika anda mematikan perisian tengah perlindungan CSRF secara global, anda boleh mengabaikan pengesahan perlindungan CSRF secara manual dalam laluan atau pengawal tertentu. Kaedah khusus adalah seperti berikut:

Dalam laluan atau kaedah pengawal yang perlu dikeluarkan, gunakan kaedah withoutMiddleware:

Route::post('route', function () {
    //
})->withoutMiddleware([IlluminateFoundationHttpMiddlewareVerifyCsrfToken::class]);

Kaedah ini boleh digunakan dalam beberapa kes khas, tetapi ia adalah tidak disyorkan dalam semua Penghala semua menggunakan kaedah ini.

Ringkasnya, melaksanakan perlindungan CSRF dalam Laravel ialah langkah keselamatan yang baik Tidak disyorkan untuk mengalih keluar perlindungan CSRF apabila ia tidak diperlukan. Jika perlu, anda boleh mengalih keluar perlindungan CSRF melalui kaedah di atas. Sudah tentu, dalam pembangunan projek sebenar, sila gunakannya dengan berhati-hati mengikut situasi sebenar.

Atas ialah kandungan terperinci laravel keluarkan csrf. 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