Hujum modeli
Brauzer ayrim vaziyatlarda cookie’ni so‘rovga avtomatik qo‘shadi. Foydalanuvchi boshqa sahifani ochgan bo‘lsa ham, zaif sayt holatini o‘zgartirishga undalishi mumkin. CSRF shu avtomatik autentifikatsiya va yetishmagan niyat tekshiruvidan foydalanadi.
Django himoyasi
O‘zgarishlarni POST kabi metodga joylang. Formada csrf_token, serverda CsrfViewMiddleware yoqilsin. AJAX’da token header bilan yuboriladi. Origin/Referer tekshiruvlari va SameSite qo‘shimcha qatlamlar. CSRF tekshiruvini qulaylik uchun o‘chirib qo‘ymang.
Chegaralarni biling
CSRF autentifikatsiya yoki obyekt ruxsatini almashtirmaydi. XSS tokenni o‘qishi yoki same-origin so‘rov yuborishi mumkin. Tokenni URL’ga qo‘ymang. Misol faqat token mosligini ko‘rsatadi; haqiqiy dasturda frameworkning sinovdan o‘tgan mexanizmidan foydalaning.
Python’da ko‘rib chiqamiz
from hmac import compare_digest
expected = "training-csrf-token"
received = "wrong-token"
print(compare_digest(expected, received))Misolni
Mustaqil mashq
Portal formasida CSRF hidden field borligini tekshiring, token qiymatini saqlamang. Django test klientida tokensiz POST 403 bo‘lishini sinov rejasiga yozing.