FixVibe
Covered by FixVibehigh

Perlindungan CSRF: Mempertahankan Terhadap Perubahan Negara Tanpa Kebenaran

Pemalsuan Permintaan Merentas Tapak (CSRF) kekal sebagai ancaman besar kepada aplikasi web. Penyelidikan ini meneroka cara rangka kerja moden seperti Django melaksanakan perlindungan dan cara atribut peringkat penyemak imbas seperti SameSite memberikan pertahanan secara mendalam terhadap permintaan yang tidak dibenarkan.

CWE-352

Kesan

Pemalsuan Permintaan Silang Tapak (CSRF) membenarkan penyerang memperdaya penyemak imbas mangsa untuk melakukan tindakan yang tidak diingini pada tapak web lain yang mangsa disahkan pada masa ini. Oleh kerana penyemak imbas secara automatik menyertakan bukti kelayakan ambien seperti kuki dalam permintaan, penyerang boleh memalsukan operasi menukar keadaan—seperti menukar kata laluan, memadamkan data atau memulakan transaksi—tanpa pengetahuan pengguna.

Punca Punca

Punca asas CSRF ialah tingkah laku lalai penyemak imbas web yang menghantar kuki yang dikaitkan dengan domain apabila permintaan dibuat ke domain tersebut, tanpa mengira asal permintaan [S1]. Tanpa pengesahan khusus bahawa permintaan sengaja dicetuskan daripada antara muka pengguna aplikasi itu sendiri, pelayan tidak boleh membezakan antara tindakan pengguna yang sah dan tindakan palsu.

Mekanisme Perlindungan CSRF Django

Django menyediakan sistem pertahanan terbina dalam untuk mengurangkan risiko ini melalui penyepaduan perisian tengah dan templat [S2].

Pengaktifan Middleware

django.middleware.csrf.CsrfViewMiddleware bertanggungjawab untuk perlindungan CSRF dan biasanya didayakan secara lalai [S2]. Ia mesti diletakkan sebelum mana-mana perisian tengah paparan yang menganggap serangan CSRF telah dikendalikan [S2].

Pelaksanaan Templat

Untuk sebarang borang POST dalaman, pembangun mesti memasukkan teg {% csrf_token %} di dalam elemen <form> [S2]. Ini memastikan bahawa token rahsia yang unik disertakan dalam permintaan, yang kemudiannya disahkan oleh pelayan terhadap sesi pengguna.

Risiko Kebocoran Token

Butiran pelaksanaan kritikal ialah {% csrf_token %} tidak boleh disertakan dalam borang yang menyasarkan URL luaran [S2]. Melakukannya akan membocorkan token rahsia CSRF kepada pihak ketiga, yang berpotensi menjejaskan keselamatan sesi pengguna [S2].

Pertahanan Peringkat Pelayar: Kuki SameSite

Penyemak imbas moden telah memperkenalkan atribut SameSite untuk pengepala Set-Cookie untuk menyediakan lapisan [S1] yang mendalam.

  • Tegas: Kuki hanya dihantar dalam konteks pihak pertama, bermakna tapak dalam bar URL sepadan dengan domain kuki [S1].
  • Lax: Kuki tidak dihantar pada subpermintaan merentas tapak (seperti imej atau bingkai) tetapi dihantar apabila pengguna menavigasi ke tapak asal, seperti dengan mengikuti pautan standard [S1].

Bagaimana FixVibe mengujinya

FixVibe kini termasuk perlindungan CSRF sebagai semakan aktif berpagar. Selepas pengesahan domain, active.csrf-protection memeriksa borang perubahan keadaan yang ditemui, menyemak input berbentuk token CSRF dan isyarat kuki SameSite, kemudian mencuba penyerahan asal palsu berimpak rendah dan hanya melaporkan apabila pelayan menerimanya. Semakan kuki juga menandakan atribut SameSite yang lemah yang mengurangkan pertahanan CSRF secara mendalam.