Xavfsizlik haqida gap ketganda ko'pchilik filmlardagi kabi murakkab hujumlarni tasavvur qiladi. Amalda esa hodisalarning katta qismi bir xil, yaxshi ma'lum xatolardan kelib chiqadi. OWASP Top 10 ro'yxati ham aynan shu tajribani jamlaydi, va uning boshida ko'p yillardan beri buzilgan kirish nazorati (Broken Access Control) turadi.
Quyida har bir loyihada tekshirishga arziydigan yetti nuqta.
1. Kirish nazorati faqat interfeysda
Tugmani yashirish — xavfsizlik emas. Agar server "bu foydalanuvchi shu yozuvni ko'rishga haqlimi?" deb tekshirmasa, kimdir manzildagi raqamni o'zgartirib (/orders/101 → /orders/102) begonaning ma'lumotini oladi. Har bir so'rovda ruxsat serverda tekshirilishi shart.
2. In'eksiyalar
Foydalanuvchi kiritgan matnni SQL so'rovga to'g'ridan-to'g'ri qo'shish eski, lekin hamon uchraydigan xato. Yechim oddiy: parametrlangan so'rovlar yoki ORM ishlating.
// Xavfli
db.query("SELECT * FROM users WHERE email = '" + email + "'")
// To'g'ri
db.query("SELECT * FROM users WHERE email = $1", [email])3. Sirlar noto'g'ri joyda
API kalitlari, ma'lumotlar bazasi paroli, service-role tokenlari kod omboriga, brauzer kodiga yoki skrinshotga tushib qolmasligi kerak. Sirlarni muhit o'zgaruvchilarida saqlang, ularni davriy almashtiring va tasodifan e'lon qilingan kalitni darhol bekor qiling.
4. Zaif autentifikatsiya
Cheksiz parol urinishlari, qisqa parollar va ikki bosqichli tasdiqlashning yo'qligi hisob buzilishiga olib keladi. Urinishlar sonini cheklang, parolni xavfsiz algoritm bilan xeshlang va muhim hisoblar uchun MFA yoki passkey taklif qiling.
5. XSS: ishonchsiz matnni sahifaga chiqarish
Foydalanuvchi matni HTML sifatida talqin qilinsa, hujumchi sahifada o'z skriptini ishga tushiradi. Zamonaviy freymvorklar (React kabi) matnni avtomatik himoyalaydi, lekin dangerouslySetInnerHTML kabi yo'llar bu himoyani o'chiradi. Ishonchsiz HTML'ni faqat tozalagandan keyin chiqaring va Content-Security-Policy sarlavhasini qo'shing.
6. Noto'g'ri sozlamalar
Hamma manbaga ochiq CORS, ishlab chiqarishda yoqilgan debug rejimi, ochiq saqlash xonalari va standart parollar — bular kod xatosi emas, sozlama xatosi. Minimal huquq tamoyiliga amal qiling: har bir xizmat faqat kerakli narsaga kira olsin.
7. Eskirgan bog'liqliklar
Loyihangizdagi kutubxonalardan birida ma'lum zaiflik bo'lishi mumkin. npm audit yoki Dependabot kabi vositalarni yoqing va yangilanishlarni muntazam qo'llang.
Qayerdan boshlash kerak
Hammasini bir kunda hal qilish shart emas. Avval 1-darajali xavflarni yoping: kirish nazorati, sirlar va autentifikatsiya. Keyin avtomatik tekshiruvlarni (bog'liqliklar, statik tahlil) CI'ga qo'shing. Xavfsizlik bir martalik loyiha emas, doimiy odat.