Xavfsizlik tahdidlari va himoya
Oldingi bo‘limlarda API’ni bosqichma-bosqich himoyaladik: parollarni bcrypt bilan xeshladik, SQL injection’ning oldini oldik, foydalanuvchilarni JWT orqali tanidik, ruxsatlarni tekshirdik va trafikni HTTPS bilan shifrladik. Bu bo‘limda qolgan keng tarqalgan tahdidlarni ko‘rib chiqamiz va himoyani yakunlaymiz.
API internetga chiqqan zahoti unga murojaatlar boshlanadi. Ularning ko‘pchiligi odamlardan emas, avtomatik skanerlardan keladi. Ular mashhur zaifliklarni izlab, internetdagi barcha manzillarni tinimsiz tekshirib chiqadi. Shu sababli "mening kichik loyiham kimga kerak?" degan fikr xavfli. Hujumchi aynan sizni nishonga olmaydi, u shunchaki zaif joyni qidiradi.
OWASP Top 10
OWASP (Open Worldwide Application Security Project) — web ilovalar xavfsizligi bo‘yicha xalqaro notijorat hamjamiyat. Uning Top 10 ro‘yxati web ilovalardagi eng muhim xavfsizlik muammolarini jamlaydi va bir necha yilda bir marta yangilanadi. API’lar uchun alohida ro‘yxat ham bor: OWASP API Security Top 10.
Ro‘yxatdagi asosiy tahdidlar va ular kursda qayerda ko‘rilgani:
| Tahdid | Qisqacha | Himoya qayerda |
|---|---|---|
| Buzilgan kirish nazorati | Boshqa foydalanuvchi ma’lumotiga kirish (IDOR) | Authorization |
| Kriptografik xatolar | Parollar ochiq saqlanadi, trafik shifrlanmagan | bcrypt, HTTPS |
| Injection | SQL, buyruq va HTML injection | SQL Injection, XSS |
| Xavfsiz bo‘lmagan dizayn | Xavfsizlik oldindan o‘ylanmagan | Butun kurs |
| Noto‘g‘ri sozlash | Debug rejimi, ochiq pprof, xavfsizlik sarlavhalarining yo‘qligi | Security headers, Gin performance |
| Zaif komponentlar | Eskirgan kutubxonalar | govulncheck |
| Autentifikatsiya xatolari | Parolni tanlab topish, zaif tokenlar | JWT, Brute-force |
| Loglash va monitoring yetishmovchiligi | Hujum sezilmay qoladi | Logging middleware |
| Resurslarni cheklamaslik | Cheksiz so‘rovlar, katta tanalar | Rate limiting, MaxBytesReader |
Ro‘yxatning joriy versiyasini OWASP rasmiy saytidan tekshiring. Tartib va nomlar yangilanib turadi.
Qatlamli himoya
Xavfsizlikda qatlamli himoya (defense in depth) tamoyili qo‘llanadi. Bitta himoya vositasiga tayanib qolinmaydi, chunki har qanday vosita xato qilishi yoki chetlab o‘tilishi mumkin. Buning o‘rniga bir-birini to‘ldiruvchi bir nechta qatlam quriladi:
Internet
│
├─ Tarmoq: firewall, faqat 80 va 443 portlar ochiq
├─ Transport: HTTPS, HSTS
├─ Kirish nuqtasi: rate limiting, tana hajmi cheklovi, timeoutlar
├─ Brauzer: xavfsizlik sarlavhalari, CORS, CSRF himoyasi
├─ Identifikatsiya: autentifikatsiya, brute-force himoyasi
├─ Ruxsat: avtorizatsiya, egalik tekshiruvi
├─ Ma’lumot: validatsiya, parametrli so‘rovlar, chiqishni ekranlash
└─ Saqlash: parollarni xeshlash, maxfiy qiymatlar, eng kam huquq
Masalan, SQL injection’dan himoyaning asosiy qatlami — parametrli so‘rovlar. Lekin validatsiya hujum yuzasini kamaytiradi, bazaga ulanish uchun minimal huquqlar esa zaiflik topilgan taqdirda ham zararni cheklaydi.
Bo‘lim rejasi
| Dars | Mavzu |
|---|---|
| CSRF & XSS | Brauzer orqali amalga oshiriladigan ikki klassik hujum |
| Input sanitizatsiyasi | Kiruvchi ma’lumotni tozalash, normallashtirish va xavfsiz ishlatish |
| Brute-force himoya | Parolni tanlab topishga qarshi himoya |
| Rate limiting (Redis) | So‘rovlar sonini cheklash |
| Security headers & CORS | Brauzer xavfsizlik sarlavhalari va boshqa domenlardan kirish |
Kutubxonalardagi zaifliklar
Zaiflik ko‘pincha sizning kodingizda emas, siz foydalanayotgan kutubxonada bo‘ladi. Go jamoasi buning uchun govulncheck vositasini taqdim etadi:
govulncheck Go zaifliklar bazasini tekshiradi va faqat kodingiz haqiqatan chaqiradigan zaif funksiyalar haqida xabar beradi. Shu sababli uning ogohlantirishlari aniq va amaliy bo‘ladi. Uni CI jarayoniga qo‘shish tavsiya etiladi. Kod sifatini tekshiradigan boshqa vositalar Go kodini tekshirish vositalari darsida ko‘rilgan.
Go’ning o‘zini ham yangilab turing. Standart kutubxonadagi net/http va crypto/tls paketlaridagi xavfsizlik tuzatishlari Go’ning yangi versiyalari bilan birga chiqadi.
Birinchi darsda brauzer orqali amalga oshiriladigan ikki klassik hujum — CSRF va XSS bilan tanishamiz.