OWASP MASVS asosida mobil ilova xavfsizligi chek-listi
Amaliyot3 daqInnovialabs tahririyati
Qisqacha
MASVS dan chek-list sifatida foydalaning: sirlarni Keychain yoki Keystore’da saqlang, sertifikatlarni pinning qiling, root’ni aniqlang, relizlarni obfuskatsiya qiling, har bir deep link’ni tekshiring, biznes-mantiq, narxlar va kalitlarni serverda saqlang.
MASVS nima va undan qanday foydalanish kerak
OWASP MASVS (Mobile Application Security Verification Standard) — xavfsiz mobil ilova nimalarni qila olishi kerakligini tavsiflovchi ochiq standart. Talablar sohalar bo‘yicha guruhlangan: STORAGE, CRYPTO, AUTH, NETWORK, PLATFORM, CODE, RESILIENCE va PRIVACY. Unga hamroh MASTG qo‘llanmasi har bir bandni qanday tekshirishni tushuntiradi.
Asosiy tamoyil: ilova siz nazorat qilmaydigan qurilmada ishlaydi. Binar faylda bor hamma narsani o‘qish, o‘zgartirish va qayta ishlatish mumkin. Quyidagi chek-list standartni aniq vazifalarga aylantiradi.
STORAGE: ma’lumotlar qayerda saqlanadi
- Tokenlar, kalitlar va parollarni faqat iOS Keychain yoki Android Keystore asosidagi xotirada saqlang. Flutter’da ikkala mexanizmni o‘rab oluvchi
flutter_secure_storagekabi plagindan foydalaning. - Tokenlarni hech qachon
UserDefaults,SharedPreferences, oddiy fayllar yoki shifrlanmagan SQLite’ga qo‘ymang. - Shaxsiy ma’lumotlar va tokenlarni loglamang, hatto testerlarga yetib borishi mumkin bo‘lgan debug yig‘malarda ham.
- Maxfiy fayllarni bulutli zaxira nusxalardan chiqarib tashlang va muhim ekranlarni ilovalar almashtirgichi oldindan ko‘rinishida yashiring.
- Bir martalik kodlardan keyin buferni tozalang va maxfiy maydonlar uchun avtotuzatishni o‘chiring.
NETWORK: trafikni himoyalash
- Faqat HTTPS. iOS’da App Transport Security’ni o‘chirmang, Android’da
cleartextTrafficPermitted="false"ni belgilang. - Qurilmaga o‘rnatilgan soxta sertifikat trafikni ushlab qolishga imkon bermasligi uchun o‘z API’ngizda certificate yoki public key pinning dan foydalaning.
- Android:
<pin-set>bilan Network Security Config. - iOS: Info.plist’dagi
NSPinnedDomainsyoki pinning’ni qo‘llab-quvvatlovchi tarmoq kutubxonasi. - Flutter: o‘z
SecurityContextingiz yoki pinning’ni qo‘llab-quvvatlovchi HTTP-mijoz.
- Android:
- Kamida ikkita kalitni (joriy va zaxira) pinning qiling va rotatsiyani rejalashtiring, aks holda muddati o‘tgan sertifikat foydalanuvchilarni yangilanishgacha bloklab qo‘yadi.
<domain-config>
<domain includeSubdomains="true">api.example.com</domain>
<pin-set expiration="2027-01-01">
<pin digest="SHA-256">base64-primary-key-hash=</pin>
<pin digest="SHA-256">base64-backup-key-hash=</pin>
</pin-set>
</domain-config>
AUTH: sessiyalar va kirish
- Qisqa muddatli access-tokenlar va server bekor qila oladigan refresh-tokenlardan foydalaning.
- Biometriya ilovaga shunchaki «true» qaytarmasdan, himoyalangan apparatdagi kalitni ochishi kerak.
- Chiqish va tokenlarni bekor qilishni server tomonida amalga oshiring.
RESILIENCE: root, jailbreak va o‘zgartirishlar
- Root va jailbreak, hook freymvorklari va debaggerlarni aniqlang. Reaksiyani xavfga qarab tanlang: kontent ilovasida ogohlantirish, fintech’da to‘lovlarni bloklash.
- Platforma attestatsiyasini afzal ko‘ring: Android’da Play Integrity API, iOS’da App Attest. Natijani ilova emas, server tekshiradi.
- Mahalliy tekshiruvlarni chetlab o‘tish mumkinligini yodda tuting; ular hujum narxini oshiradi, lekin uni imkonsiz qilmaydi.
CODE: yig‘ish gigiyenasi
- Obfuskatsiya va kichraytirishni yoqing: Android’da R8/ProGuard, Flutter’da
flutter build --obfuscate --split-debug-info. Mapping fayllarini yopiq saqlang — ular crash’larni ochish uchun kerak. - Relizdan debug-menyular, test endpoint’lari va batafsil loglarni olib tashlang.
- Bog‘liqliklarni yangilab turing va ularni ma’lum zaifliklarga tekshiring.
PLATFORM: deep link’lar va tizim bilan o‘zaro ishlash
- Tasdiqlangan havolalardan foydalaning:
assetlinks.jsonbilan Android App Links vaapple-app-site-associationbilan iOS Universal Links.myapp://kabi maxsus sxemani boshqa ilova egallab olishi mumkin. - Deep link’ning har bir parametrini ishonchsiz kiritma sifatida tekshiring. Havola tasdiqlashsiz to‘lovni boshlamasligi, sozlamalarni o‘zgartirmasligi yoki WebView’da ixtiyoriy URL ni ochmasligi kerak.
- Ommaviy bo‘lishi shart bo‘lmagan Android komponentlarini (activities, receivers, providers) eksport qilmang.
- WebView’da keraksiz JavaScript ko‘priklarini o‘chiring va faqat o‘z domenlaringizni yuklang.
Nima albatta serverda qolishi kerak
| Hech qachon ilovada emas | Nega |
|---|---|
| To‘lov, SMS, AI servislarining maxfiy API kalitlari | Ular binar fayldan ajratib olinadi |
| Narx, chegirma va bonuslarni hisoblash | Mijoz so‘rovni almashtirishi mumkin |
| Kirish tekshiruvlari va limitlar | Mahalliy tekshiruvlarni patch bilan olib tashlash mumkin |
| Xaridlar va obunalarni tekshirish | Cheklar do‘kon orqali serverdan tasdiqlanishi kerak |
Ilova — qulay interfeys, haqiqat manbai — server.