πŸ—„οΈ
Xavfsizlik

Ma'lumotlar bazasi xavfsizligi: SQL injection, parametrlar va shifrlash

28.02.2034
← Barcha maqolalar

Ma'lumotlar bazasi β€” har qanday saytning eng qimmatli aktivi. Foydalanuvchilar profili, parollar, buyurtmalar, to'lov ma'lumotlari va boshqa kritik ma'lumotlar shu yerda saqlanadi. Ma'lumotlar bazasi xavfsizligining buzilishi nafaqat saytning ishini to'xtatadi, balki foydalanuvchilar oldida obro'ni yo'qotishga olib keladi va qonuniy oqibatlarga ham sabab bo'lishi mumkin. Sayt.uz mijozlari uchun ma'lumotlar bazasi xavfsizligi alohida e'tibor talab qiladigan soha bo'lib, biz har bir bosqichda himoya qatlamlarini joriy etamiz.

SQL injection β€” eng keng tarqalgan hujum

SQL injection β€” bu hujumchi foydalanuvchi kiritish maydonlari orqali ma'lumotlar bazasiga zararli SQL kodi yuborishga harakat qiladigan hujum turi. Misol uchun, login formada parol o'rniga "' OR '1'='1" deb yozsa va sayt buni to'g'ridan-to'g'ri SQL so'roviga qo'shsa, autentifikatsiya buzilishi mumkin. Bu hujum natijasida butun foydalanuvchilar bazasini yuklab olish, ma'muriy huquqlar olish yoki butun ma'lumotlar bazasini o'chirib tashlash imkoni paydo bo'ladi. OWASP Top 10 ro'yxatida SQL injection yillar davomida eng yuqori o'rinlarni egallab keladi.

Parametrli so'rovlar (Prepared Statements)

SQL injection'dan himoyaning eng samarali usuli β€” parametrli so'rovlar yoki prepared statements'dan foydalanish. Bu yondashuvda SQL so'rovining strukturasi va foydalanuvchi ma'lumotlari alohida yuboriladi, shuning uchun foydalanuvchi kiritgan har qanday matn SQL kodi sifatida bajarilmaydi. PHP'da PDO yoki MySQLi yordamida bunday so'rovlar yoziladi. Masalan, PDO bilan: $stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?"); $stmt->execute([$email]); β€” bu yerda $email'da qanday matn bo'lishidan qat'i nazar, u faqat qiymat sifatida qabul qilinadi, kod sifatida emas.

Foydalanuvchi kiritishini tekshirish va tozalash

Parametrli so'rovlardan tashqari, foydalanuvchi kiritgan ma'lumotlarni validatsiya qilish ham muhim. Har bir kiritish maydoni uchun aniq qoidalar bo'lishi kerak: email maydoni faqat email formatida, telefon maydoni faqat raqamlar, ism maydoni faqat harflarni qabul qilishi mumkin. PHP'da filter_var() funksiyasi orqali ko'p turdagi validatsiya bajariladi. Bundan tashqari, htmlspecialchars() funksiyasi XSS hujumlardan himoya qiladi. Bunday qatlamli yondashuv ko'p qatlamli himoyani ta'minlaydi β€” bir qatlam buzilsa, boshqasi himoyani davom ettiradi.

Foydalanuvchi ruxsatlarini minimal qilish

Sayt ma'lumotlar bazasiga ulanish uchun ishlatadigan foydalanuvchi minimal kerakli huquqlarga ega bo'lishi kerak. Veb-saytlar uchun odatda SELECT, INSERT, UPDATE va DELETE huquqlari yetarli. CREATE TABLE, ALTER TABLE huquqlari faqat o'rnatish jarayonida kerak β€” keyin olib tashlanishi mumkin. GRANT OPTION, SUPER, DROP DATABASE kabi yuqori darajadagi huquqlar veb-sayt foydalanuvchisida bo'lmasligi shart. Bu yondashuv SQL injection muvaffaqiyatli bo'lgan taqdirda ham zararni cheklab qo'yadi β€” buzg'unchi DROP DATABASE qila olmaydi yoki boshqa bazalarni o'qiy olmaydi.

Sezgir ma'lumotlarni shifrlash

Hatto barcha himoya qatlamlari mavjud bo'lsa ham, ma'lumotlar bazasining o'g'irlanish ehtimoli bor. Shu sababli sezgir ma'lumotlar shifrlangan holatda saqlanishi kerak. Parollar hech qachon ochiq matnda saqlanmasin β€” ular bcrypt, Argon2 yoki kamida PBKDF2 algoritmlari orqali xeshlanishi shart. PHP'da password_hash() va password_verify() funksiyalari aynan shu maqsadda yaratilgan. Kredit karta ma'lumotlari, shaxsiy hujjat raqamlari kabi ma'lumotlar AES-256 algoritmi bilan shifrlangan holatda saqlanishi tavsiya etiladi.

Sayt.uz amaliyot

Sayt.uz hosting tarmog'ida ma'lumotlar bazasi xavfsizligi ko'p qatlamli yondashuv bilan ta'minlanadi. Har bir mijoz uchun alohida MySQL/MariaDB foydalanuvchi yaratilib, faqat o'z bazalariga kirish huquqi beriladi. Tashqi IP'lardan to'g'ridan-to'g'ri ulanish bloklangan β€” faqat localhost orqali kirish mumkin. Avtomatik kunlik ma'lumotlar bazasi zaxiralari 14 kun saqlanadi. Mijoz kabinetida "Bazani xavfsizligi" bo'limidan har bir bazaning so'rovlar statistikasi va shubhali aktivliklar haqida ma'lumot olish mumkin. Bizning xavfsizlik tizimi g'ayrioddiy so'rovlar (juda ko'p o'qish, ommaviy DELETE) holatlarini avtomatik aniqlaydi va mijozni xabardor qiladi.

Muntazam zaxiralar va monitoring

Hech qanday himoya yuz foiz emas, shuning uchun muntazam zaxiralar va monitoring zarur. Har kuni avtomatik bazani zaxiralash va ularni kamida ikki turli joyda (lokal server va bulutli xizmat) saqlash tavsiya etiladi. MySQL'ning slow query log va general query log fayllari shubhali aktivliklarni aniqlashga yordam beradi. Bundan tashqari, ma'lumotlar bazasi serverini muntazam yangilab turing β€” ko'plab xavfsizlik tuzatishlari yangilanishlar bilan keladi.

O'xshash maqolalar

πŸ” Parol menejerlar β€” Bitwarden, 1Password, LastPass va KeePass tanlovi 🍯 Honeypot β€” formada yashirin maydon, botlarni ushlaydi va spamni to'xtatadi πŸ“„ /.well-known/security.txt β€” xavfsizlik bo'yicha bog'lanish standart πŸ“‹ GDPR moslik β€” Yevropa ma'lumotlarini himoya qilish majburiyatlari
🌐 Til
πŸ‡ΊπŸ‡Ώ O'zbek βœ“ πŸ‡ΊπŸ‡Ώ ЎзбСк πŸ‡·πŸ‡Ί Русский πŸ‡¬πŸ‡§ English