FixVibe
Covered by FixVibehigh

CSRF himoyasi: ruxsatsiz davlat o'zgarishlariga qarshi himoya

Saytlararo so'rovlarni soxtalashtirish (CSRF) veb-ilovalar uchun jiddiy tahdid bo'lib qolmoqda. Ushbu tadqiqot Django kabi zamonaviy ramkalar himoyani qanday amalga oshirishi va SameSite kabi brauzer darajasidagi atributlar ruxsatsiz so'rovlardan qanday qilib chuqur himoyalanishini o'rganadi.

CWE-352

Ta'sir

Saytlararo so‘rovlarni qalbakilashtirish (CSRF) tajovuzkorga jabrlanuvchining brauzerini aldab, jabrlanuvchi hozirda autentifikatsiya qilingan boshqa veb-saytda istalmagan harakatlarni amalga oshirishga imkon beradi. Brauzerlar avtomatik ravishda so'rovlarga cookie fayllari kabi atrof-muhit hisob ma'lumotlarini o'z ichiga olganligi sababli, tajovuzkor foydalanuvchi bilmagan holda parollarni o'zgartirish, ma'lumotlarni o'chirish yoki tranzaktsiyalarni boshlash kabi holatni o'zgartirish operatsiyalarini soxtalashtirishi mumkin.

Asosiy sabab

CSRF ning asosiy sababi veb-brauzerning sukut bo'yicha xatti-harakatidir. [S1]. Ilovaning o'z foydalanuvchi interfeysidan so'rov qasddan ishga tushirilganligini aniq tasdiqlamasdan, server qonuniy foydalanuvchi harakati va soxta harakat o'rtasidagi farqni ajrata olmaydi.

Django CSRF himoya mexanizmlari

Django [S2] o'rta dastur va shablon integratsiyasi orqali ushbu xavflarni kamaytirish uchun o'rnatilgan mudofaa tizimini taqdim etadi.

O'rta dasturni faollashtirish

django.middleware.csrf.CsrfViewMiddleware CSRF himoyasi uchun javob beradi va odatda sukut bo'yicha [S2] yoqiladi. U [S2] CSRF hujumlari allaqachon qayta ishlangan deb hisoblaydigan har qanday ko'rish oraliq dasturidan oldin joylashtirilishi kerak.

Shablonni amalga oshirish

Har qanday ichki POST shakllari uchun ishlab chiquvchilar {% csrf_token %} tegini <form> elementi [S2] ichiga kiritishlari kerak. Bu so'rovga noyob, maxfiy token qo'shilishini ta'minlaydi, so'ngra server uni foydalanuvchi sessiyasiga nisbatan tasdiqlaydi.

Tokenning chiqib ketish xavfi

Amalga oshirishning muhim tafsiloti shundaki, {% csrf_token %} hech qachon [S2] tashqi URL manzillariga mo'ljallangan shakllarga kiritilmasligi kerak. Bunday qilish maxfiy CSRF tokenini uchinchi tomonga o‘tkazib yuborishi mumkin, bu esa foydalanuvchining [S2] seans xavfsizligini xavf ostiga qo‘yishi mumkin.

Zamonaviy brauzerlar SameSite atributini Set-Cookie sarlavhasi uchun chuqurroq himoyalangan [S1] qatlamini taqdim etdi.

  • Qattiq: Cookie faqat birinchi tomon kontekstida yuboriladi, ya'ni URL satridagi sayt cookie faylining [S1] domeniga mos keladi.
  • Lax: Cookie saytlararo quyi so'rovlar (masalan, tasvirlar yoki ramkalar) bo'yicha yuborilmaydi, lekin foydalanuvchi [S1] standart havolasiga rioya qilish kabi manba saytiga o'tganda yuboriladi.

FixVibe buni qanday sinovdan o'tkazadi

FixVibe endi CSRF himoyasini yopiq faol tekshiruv sifatida o'z ichiga oladi. Domenni tekshirgandan so‘ng, active.csrf-protection aniqlangan holatni o‘zgartiruvchi shakllarni tekshiradi, CSRF token shaklidagi kirishlar va SameSite cookie signallarini tekshiradi, so‘ngra past ta’sirli soxta kelib chiqishini taqdim etishga urinib ko‘radi va faqat server uni qabul qilganda hisobot beradi. Cookie tekshiruvlari, shuningdek, CSRF himoyasini chuqurroq kamaytiradigan zaif SameSite atributlarini belgilaydi.