Ushbu bo'limda o'z vebsaytlaringizni CSRF zaifliklaridan himoya qilish bo'yicha yuqori darajadagi maslahatlar beramiz.
CSRF hujumlaridan himoyalanishning eng mustahkam yo'li — tegishli so'rovlarga CSRF token qo'shish. Token quyidagi mezonlarga javob berishi kerak:
CSRF tokenlari sezilarli entropiyaga ega va kuchli taxmin qilib bo'lmaydigan bo'lishi kerak. Kriptografik xavfsiz psevdo-tasodifiy son generatoridan (CSPRNG) foydalaning. Qo'shimcha ishonch uchun, uning natijasini foydalanuvchiga xos entropiya bilan birlashtirib, butun tuzilmaning kuchli hash'ini olishingiz mumkin.
CSRF tokenlari maxfiy sifatida qaralishi kerak. Odatda samarali yondashuv — tokenni POST metodi bilan yuboriladigan HTML formasining yashirin maydonida mijozga uzatish:
<input type="hidden" name="csrf-token" value="CIwNZNlR4XbisJF39I8yWnWX9wX4WFoz" />Xavfsizlik uchun CSRF token maydoni HTML hujjatda iloji boricha erta joylashtirilishi kerak. Tokenni URL query string'ga joylash kamroq xavfsiz, chunki query string turli joylarda loglanadi, Referer sarlavhasi orqali uchinchi tomonlarga uzatilishi va ekranda ko'rinishi mumkin. CSRF tokenlari cookie'lar ichida uzatilmasligi kerak.
Token generatsiya qilinganda, u server tomonda foydalanuvchi sessiya ma'lumotida saqlanishi kerak. Keyingi so'rov kelganda, server so'rov sessiyada saqlangan qiymatga mos keladigan tokenni o'z ichiga olishini tekshirishi kerak. Bu tekshiruv HTTP metodi yoki content type'dan qat'i nazar bajarilishi shart. So'rovda umuman token bo'lmasa, u noto'g'ri token bilan bir xil tarzda rad etilishi kerak.
Mustahkam CSRF token tekshiruvidan tashqari, har bir cookie bilan o'zingizning SameSite cheklovlaringizni aniq belgilashni tavsiya qilamiz. Ideal holatda standart bo'yicha Strict siyosatdan foydalaning, so'ng yaxshi sabab bo'lsagina uni Lax ga tushiring. Xavfsizlik oqibatlarini to'liq bilmasangiz, hech qachon SameSite=None bilan SameSite cheklovlarini o'chirmang.
To'g'ri sozlangan SameSite cheklovlari cross-site hujumlardan yaxshi himoya bersa-da, ular cross-origin, same-site hujumlarga qarshi butunlay kuchsiz. Iloji bo'lsa, foydalanuvchi yuklagan fayllar kabi xavfsiz bo'lmagan kontentni maxfiy funksiya yoki ma'lumotdan alohida saytda izolyatsiya qiling. Saytni sinaganda uning barcha sibling domenlarini ham sinchiklab audit qiling.