Fayl yuklash zaifliklaridan saboq: "yaxshi yetadi" deyishning xavfi

Fayl yuklash zaifliklaridan saboq: "yaxshi yetadi" deyishning xavfi

Iyl 11, 2026 web security file upload vulnerabilities validation best practices php security web hosting security application security developer security vulnerability disclosure

Bir Hafta Ichida Ko'ringan Muammo

Uch xil hosting provider bir hafta ichida bir xil xavfsizlik muammosini e'lon qildi. Bu muammo — fayl yuklashda minimal tekshiruv qilish edi.

Bu yangi masala emas. Bu xatolar doimiy ravishda takrorlanib turadi. Kompaniyalar esa millionlab dollar yo'qotadi — tozalash xarajatlari, mijozlar ishonchini yo'qotish, sud ishlaridan.

Minimal Tekshiruv Deganda Nima Tushuniladi?

Dasturchilar fayl yuklash funksiyasini yozayotganda, ko'pincha eng oson yo'lni tanlaydi. Fayl kengaytmasini tekshiradi, MIME turini tekshiradi, hajmini tekshiradi.

Bular o'zi yomon tekshiruvlar emas. Lekin ular yetarli emas.

Minimal tekshiruv — bu faylni to'liq tekshirmasdan xavfsiz deb o'ylash. Bu xatolarni qilish juda oson, chunki sinovda hamma narsa yaxshi ishlaydi.

Muammo shundaki, hakerlar bu zaif joylarni juda yaxshi biladi. Ular tekshiruvlardan o'tib ketadigan fayllar yaratishadi.

Fayl Yuklash Xavfsizlik Teshigi Qanday Ko'rinishda Bo'ladi

O'tgan haftada topilgan xavfsizlik teshiklari bir xil tuzilishga ega edi:

  1. Kengaytma tekshiruvi zaif — ikki tomonlama kengaytma qo'yish mumkin (masalan: malicious.php.jpg)

  2. Fayl ichidagi ma'lumot tekshirilmaydi — rasm ko'rinishidagi fayl aslida kod bo'lishi mumkin

  3. Fayllar noto'g'ri joyda saqlanadi — veb-serverdan bevosita ochish mumkin bo'lgan papkada

  4. Ishga tushishga ruxsat bor — server yuklangan fayllarni bajarishga to'sqinlik qilmaydi

Natijada, haker parol kiritmasdan serverni to'liq boshqarish imkoniyatiga ega bo'ladi.

Nima Uchun Dasturchilar Shu Xatoni Takrorlaydi

Vaqt yetishmaydi — tez yetkazib berish talab qilinadi. To'liq tekshiruv ortiqcha ish kabi ko'rinadi.

Sinovda yaxshi ko'rinadi — toza fayllar bilan sinov o'tkaziladi. Ishlab chiqarishda esa hamma narsa buziladi.

Xavflardan boxabar emas — har bir dasturchi xavfsizlik mutaxassisi emas. Hakerlar fayllarni qanday manipulatsiya qilishini bilmasligi mumkin.

Boshqa joyda himoyalangan deb o'ylash — jamoa WAF yoki server sozlash yetarli deb o'ylaydi. Bu xavfli fikr.

To'g'ri Fayl Yuklash Xavfsizligi Qanday Bo'ladi

Xavfsizlik uchun bir necha qatlam kerak:

1. Fayl Turini Kengaytma Bilan Emas, Ichki Mazmun Bilan Tekshing

# Noto'g'ri usul - foydalanuvchiga ishonadi
if file.filename.endswith('.jpg'):
    save_file(file)

# To'g'ri usul - haqiqiy tarkibni tekshiradi
import magic

mime_type = magic.from_buffer(file.read(1024), mime=True)
file.seek(0)

if mime_type in ALLOWED_MIME_TYPES:
    save_file(file)

python-magic yoki libmagic kabi kutubxonalar fayl nomi emas, ichidagi ma'lumotni tekshiradi.

2. Yangi Fayl Nomi Yaratish

Yuklangan fayl nomini hech qachon to'g'ridan-to'g'ri ishlatmang:

import uuid
import os

# Barcha kengaytmalarni olib tashlang, yangi nom yarating
secure_filename = f"{uuid.uuid4().hex}.{allowed_extension}"
filepath = os.path.join(UPLOAD_DIR, secure_filename)

3. Fayllarni Web Root Tashqarisida Saqlash

Muhim ilovalar uchun bu majburiy. Agar fayllarni ko'rsatish kerak bo'lsa, maxsus skript orqali, ruxsat tekshirib ko'rsating.

4. Serverda Bajarilyaptgan Fayllarni Bloklash

# Apache - yuklangan fayllarni ishga tushirmaslik
<Directory "/var/www/uploads">
    <FilesMatch "\.(php|phtml|phar|py|pl|exe)$">
        Order Deny,Allow
        Deny from all
    </FilesMatch>
</Directory>

5. Qo'shimcha Tekshiruv Qatlamlari

  • Fayl imzosini tekshirish — fayl boshida maxsus baytlar borligini tekshiring
  • Rasmni tozalash — imagemagick orqali qayta ishlash, ichidagi kodni olib tashlash
  • Hajm cheklovi — fayl hajmi emas, rasm o'lchamlari ham muhim
  • Tezlik cheklovi — bir daqiqada nechta fayl yuklash mumkinligini belgilang

Bu Muammolarning Odamlarga Ta'siri

Texnik masaladan tashqari, bu zaifliklar real odamlarga ta'sir qiladi:

  • Mijozlar — ularning ma'lumotlari o'g'irlanadi
  • Bizneslar — jarimalar va sud xarajatlari
  • Dasturchilar — ismlariga dog' tushadi
  • Foydalanuvchilar — xizmatga ishonchni yo'qotadi

Xavfsizlik qo'shimcha funksiya emas — mas'uliyat.

Hosting Providerlar Nima Qilishi Kerak

Hosting platformasi yoki fayl yuklash funksiyasini yaratayotgan bo'lsangiz:

  1. Mavjud kodni tekshiring — minimal tekshiruvlarni qidiring
  2. To'liq tarkib tekshiruvini qo'llang
  3. Yuklangan fayllarni veb-serverdan tashqarida saqlang
  4. WAF qoidalarini qo'shing — qo'shimcha himoya sifatida
  5. Xavfsizlik holatlariga tayyorgarlik ko'ring — muammo bo'lganda nima qilishni biling
  6. Dasturchilarni o'qiting — xavfsizlik bo'yicha bilim bering

Xulosa

O'tgan haftada topilgan xavfsizlik teshiklari murakkab hujumlar yoki yangi kashfiyotlar tufayli emas. Ular oddiy yo'l — minimal tekshiruv — tufayli yuzaga keldi.

Bu yaxshi yangilik, chunki tuzatish oson.

Xavfsizlik sekin yoki og'riqli bo'lishi shart emas. Faqat "ey, ishlayapti" deyishdan to'liq tekshiruvga o'tish kerak.

Sizning ilovangiz albatta sinovdan o'tkaziladi. Muhimi — sinovda muvaffaqiyatli o'tish.

Read in other languages:

RU BG EL CS TR SV FI RO PT PL NB NL HU IT FR ES DE DA ZH-HANS EN