Rate limit nimani sanaydi
«Bizda so’rovlar cheklangan» degan gap yarim javob. Asosiy savol boshqacha: cheklov nimani kalit qilib oladi va o’sha kalitni almashtirish hujumchiga qanchaga tushadi?
«Bizda so’rovlar cheklangan» degan gap yarim javob. Asosiy savol boshqacha: cheklov nimani kalit qilib oladi va o’sha kalitni almashtirish hujumchiga qanchaga tushadi?
Har qanday rate limit uchta narsadan iborat: kalit, oyna va chegara. Kalit — so’rovlarni kim nomidan sanashimiz. Ko’pchilik faqat oyna va chegarani sozlaydi, kalit esa sukut bo’yicha qoladi.
Sukut bo’yicha kalit odatda IP manzil bo’ladi. Bu eng oson variant, chunki u har doim mavjud va hech qanday ilova mantig’i talab qilmaydi.
Va aynan shuning uchun u eng zaif variant: hujumchi uchun IP almashtirish arzon, sizning haqiqiy foydalanuvchilaringiz uchun esa IP ko’pincha umumiy.
Birinchi xato — yolg’on ijobiy. Mobil operatorning NAT manzili ortida minglab abonent turadi. Ular uchun umumiy chegara qo’yilsa, oddiy foydalanuvchi ham hech narsa qilmasdan bloklanadi.
Ikkinchi xato — yolg’on salbiy. Zamonaviy hujumda so’rovlar minglab uy proksilaridan keladi va har bir manzildan sekundiga bir-ikkita so’rov chiqadi. Har bir manzil alohida chegaradan pastda qoladi, umumiy oqim esa xizmatni yiqitadi.
Ikkala xato ham bitta sababdan kelib chiqadi: IP manzil hujumchiga tegishli emas, u tarmoqqa tegishli. Siz nazorat qilmoqchi bo’lgan narsa esa xatti-harakat.
Amalda kalit bitta emas, bir nechta bo’ladi va ular birga ishlaydi. Eng aniq kalit — hisob identifikatori: tizimga kirgan foydalanuvchi uchun uni almashtirish qimmat.
Keyingisi — sessiya yoki qurilma identifikatori: hisobsiz oqimlar uchun ishlaydi, lekin uni tozalash oson. Uchinchisi — tarmoq blok, ya’ni bitta IP emas, butun podset yoki avtonom tizim.
To’rtinchi kalit ko’pincha unutiladi: harakatning o’zi. «Bitta telefon raqamiga yuborilgan SMS soni» — bu ham rate limit, va u kim yuborayotganidan qat’i nazar ishlaydi.
Bitta umumiy chegara bo’lmasligi kerak. Statik faylni so’rash bilan qidiruv bajarish yoki SMS yuborish bir xil narxda emas, shuning uchun ular bir xil chegarada bo’lishi mantiqsiz.
Amaliy misol: statik sahifa 1× vazn oladi, qidiruv 10×, SMS yuborish esa 100×. Byudjet shu vazn bo’yicha sarflanadi, shuning uchun foydalanuvchi yuzta sahifa ochishi mumkin, lekin o’n marta qidiruv qilishi mumkin.
Bu, ayniqsa, tashqi xarajat bo’lgan joyda muhim: SMS, pochta, tashqi API. U yerda chegara texnik emas, moliyaviy hisoblanadi.
Chegaradan oshgan so’rovni darhol rad etish shart emas. Ko’p holatda uni sekinlashtirish yetarli: javob 200 millisekund kechiktiriladi va real foydalanuvchi buni sezmaydi.
Skript uchun esa bu halokatli: uning butun samaradorligi tezlikda edi. Sekinlashtirish hujumni foydasiz qiladi, lekin xato bo’lgan taqdirda ham foydalanuvchini yo’qotmaydi.
Bosqichlar shunday quriladi: avval sekinlashtirish, keyin tekshiruv talab qilish, keyin rad etish. Har bosqich oldingisining natijasiga qarab qo’llanadi.
Qat’iy oyna — eng oson usul va eng oson chetlab o’tiladigani. Agar hisob har daqiqada noldan boshlansa, hujumchi daqiqaning oxirgi soniyasida va keyingisining birinchi soniyasida chegaraning ikki barobarini yuboradi.
Shuning uchun siljuvchi oyna yoki token-bucket ishlatiladi. Ikkinchisi qo’shimcha foyda beradi: u qisqa muddatli portlashga ruxsat beradi, lekin o’rtacha tezlikni ushlab turadi.
Bu farq amalda seziladi. Sahifa ochilganda brauzer o’nlab so’rov yuboradi — bu normal portlash, va uni bloklaydigan cheklov saytni buzadi.
Rate limit qaror qabul qilish joyi bilan ijro joyi ajratilganda ishlaydi. Qaror ilova kontekstida chiqadi, ijro esa iloji boricha pastda va arzon joyda bo’ladi.
Agar cheklov ilova ichida bajarilsa, siz baribir ulanish, TLS va so’rovni o’qishni to’laysiz. Katta oqimda bu cheklovning o’zi yukka aylanadi.
Ikkinchi talab — taqsimlangan hisob. Bir nechta server orasida hisob umumiy bo’lmasa, hujumchi shunchaki har safar boshqa nusxaga tushib chegarani ko’paytiradi.
Uchta test yetarli. Birinchisi: bitta hisob bilan, lekin o’nta turli IP’dan so’rov yuboring. Chegara ishlasa, kalit hisob bo’yicha ishlayapti.
Ikkinchisi: bitta IP’dan, lekin o’nta turli hisob bilan. Bloklanish bo’lmasa, siz umumiy tarmoq ortidagi foydalanuvchilarni jazolamayapsiz.
Uchinchisi: sekundiga bir so’rovdan, lekin yuzta manbadan. Agar hech narsa sezilmasa, sizda faqat manba bo’yicha cheklov bor va taqsimlangan sekin hujum ko’rinmay o’tadi.
Domeningizni ko’rsatsangiz, hozirgi tashqi holatingiz bo’yicha dastlabki tahlil beramiz. Bu bosqichda hech narsa o’zgartirilmaydi.

