Tarkibga o'tish

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:

go install golang.org/x/vuln/cmd/govulncheck@latest
govulncheck ./...

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.