Kiber Xavfsizlik Web Dasturlari
Web dasturlari bizning deyarli barcha faoliyatlarimizga integrallashgan, Internetga kirishdan tortib, sizning gazon kesgichingizni masofadan boshqarishga qadar. Ushbu kirish kursida biz web dastur xavfsizligining asoslarini ko‘rib chiqamiz.
HTTP Protokoli
HTTP - bu brauzerlarimiz va dasturlarimizga HTML ("Hyper Text Markup Language"), CSS ("Cascading Style Sheets"), tasvirlar va videolar kabi kontentlarni olish imkonini beruvchi tashuvchi protokoldir.
URL-lar, So‘rov Parametrlari va Schemas
Web dasturiga kirish uchun biz URL ("Uniform Resource Locator") dan foydalanamiz, masalan: https://www.google.com/search?q=udemere+cyber+security&ie=UTF-8
URL google.com ga quyidagi qismlardan iborat bo‘ladi: domen, skript va So‘rov Parametrlari.
Kirayotgan skript /search deb ataladi. / serverda fayllar xizmat ko‘rsatadigan yuqori papkada joylashganligini bildiradi. ? skriptga kirish parametrlarini ko‘rsatadi va & turli kirish parametrlarini ajratadi. Bizning URL-da kirish parametrlar quyidagilar:
- q qiymati udemere cyber security
- ie qiymati UTF-8
Ushbu kirishlarning ma'nosi web-server dasturiga bog‘liq.
Ba'zan faqat / yoki /? ko‘rishingiz mumkin, bu skriptning ushbu manzilga javob berishi uchun sozlanganligini bildiradi. Odatda bu skript indeks fayli bo‘lib, maxsus skript ko‘rsatilmasa barcha so‘rovlarni qabul qiladi.
Scheme protokolni belgilaydi. Bizning holatda bu URL ning birinchi qismi: https. Agar scheme URL-da aniqlanmagan bo‘lsa, dastur nima ishlatishni belgilaydi. Schemes quyidagi protokollarni o‘z ichiga olishi mumkin:
- HTTP
- HTTPS
- FTP
- SSH
- SMB
HTTP Sarlavhalari
HTTP protokoli ko‘plab sarlavhalardan foydalanadi, ba'zilari dasturga xos, boshqalari esa texnologiya tomonidan yaxshi aniqlangan va qabul qilingan.
Misol so‘rov: http://google.com
So‘rov sarlavhasi mijoz nima bajarishni xohlayotganini ko‘rsatadi. Shuningdek, qabul qilish mumkinligi, qaysi mijoz kirayotganligi va serverning mijozga taqdim etgan cookie'lari haqida ma'lumotlarni o‘z ichiga oladi. HTTP so‘rov sarlavhalari quyidagicha tushuntirilgan:
Sarlavha | Tushuntirish |
---|---|
GET /search... HTTP/1.1 | GET - biz foydalanayotgan fe'l. Yo‘l va so‘rov parametrlarini ko‘rsatadi va HTTP versiyasini bildiradi |
Host: google.com | Maqsadli xizmatni ko‘rsatadi. Serverda bir nechta xizmatlar bo‘lishi mumkin |
User-Agent | Mijoz dasturi (odatda brauzer) o‘zini versiya, dvigatel va operatsion tizim bilan tanishtiradi |
Accept | Mijoz qaysi kontentlarni qabul qilishini belgilaydi |
Referer: https://udemere.uz/ | Mijoz boshqa web-saytdan havola bosgan bo‘lsa, Referer sarlavhasi qayerdan kelganini ko‘rsatadi |
Accept-Encoding: gzip, deflate | Kontent siqilishi yoki kodlanishi mumkinmi? Nimalarni qabul qilishimiz mumkinligini belgilaydi |
Cookie | Cookie'lar server tomonidan avvalgi so‘rovda yuborilgan qiymatlar bo‘lib, mijoz har bir keyingi so‘rovda qaytaradi |
Ushbu so‘rov bilan server sarlavhalar va kontent bilan javob beradi. Misol sarlavhalar quyidagicha:
HTTP javob sarlavhalari quyidagicha tushuntirilgan:
Sarlavha | Tushuntirish |
---|---|
HTTP/1.1 200 OK | HTTP Javob kodi. Batafsil HTTP Javob Kodlari bo‘limida tushuntirilgan |
Content-Type: text/html | Qaytarilayotgan kontent turi, masalan HTML, JSON yoki XML |
Set-Cookie: | Mijozning keyingi so‘rovda eslab qolishi va qaytarishi kerak bo‘lgan maxsus qiymatlar |
HTTP Metodlari
Web dasturiga kirishda mijozga qanday ma'lumot yuborilishi haqida ko‘rsatma beriladi. Ilova qabul qilishi mumkin bo‘lgan ko‘plab fe’llar mavjud.
HTTP method | Qanday ishlatiladi |
---|---|
GET | Odatda So‘rov Parametrlari orqali qiymatlarni olish uchun ishlatiladi |
POST | So‘rov tanasi orqali ma'lumot yuborish uchun ishlatiladi. Odatda yaratish, yuklash yoki katta hajmdagi ma'lumotlarni yuborish |
PUT | Odatda web-serverga ma'lumotlarni yuklash yoki yozish uchun ishlatiladi |
DELETE | O‘chirilishi kerak bo‘lgan resursni ko‘rsatadi |
PATCH | Resursni yangi qiymat bilan yangilash uchun ishlatiladi |
Bu web dastur talablariga qarab ishlatiladi. RESTful (REST) web xizmatlari HTTP Fe’llar to‘liq to‘plamidan foydalanishga ayniqsa yaxshi.
HTTP Javob Kodlari
Web-serverdagi dastur server tomonida qanday voqea sodir bo‘lishiga qarab turli kodlar bilan javob berishi mumkin. Xavfsizlik mutaxassislari bilishi kerak bo‘lgan keng tarqalgan javob kodlari:
Kod | Tushuntirish |
---|---|
200 | Dastur odatdagi holatda qaytarildi |
301 | Server mijozni yangi manzilga doimiy ravishda yo‘naltirishni so‘raydi |
302 | Vaqtinchalik yo‘naltirish. Mijoz bu javobni saqlashga hojat yo‘q |
400 | Mijoz noto‘g‘ri so‘rov yubordi |
403 | Mijoz ushbu resursga kirishga ruxsat etilmagan. Avtorizatsiya talab qilinadi |
404 | Mijoz mavjud bo‘lmagan resursga kirishga harakat qildi |
500 | Server so‘rovni bajarishda xato qildi |
REST
REST xizmatlari, ba'zan RESTful xizmatlar deb ataladigan, HTTP Fe’llar va HTTP Javob Kodlarining to‘liq quvvatidan foydalanib web dasturini ishlatishni osonlashtiradi. RESTful xizmatlar ko‘pincha URL qismlarini so‘rov parametrlariga qamrab olish uchun ishlatiladi. REST API'lar ("Application Programming Interfaces") tomonidan ishlatiladi.
REST URL-lari URLning turli elementlari asosida funksionallikni ishga tushiradi.
Misol REST URL: http://example.com/users/search/udemere
Ushbu URL URL qismi orqali funksionallikni ishga tushiradi, so‘rov parametrlaridan emas. Biz URLni quyidagicha tahlil qila olamiz:
Parametr | Izoh |
---|---|
users | Funksionallikning foydalanuvchilar qismiga kirish |
search | Qidiruv xususiyatiga kirish |
udemere | Qidirilishi kerak bo‘lgan foydalanuvchi |
Sessiyalar va Holat
HTTPda qaytgan tashrif buyuruvchini aniqlash uchun o‘rnatilgan usul mavjud emas. Web-server foydalanuvchini aniqlash uchun har bir so‘rovda Mijozga maxfiy qiymat uzatilishi kerak. Bu odatda sarlavhalarda cookies orqali amalga oshiriladi, lekin GET va POST parametrlarida yoki boshqa sarlavhalarda ham keng tarqalgan. Holatni GET parametrlar orqali o‘tkazish tavsiya etilmaydi, chunki bunday parametrlar ko‘pincha serverda yoki oraliqlarda loglanadi.
Cookies Misollari
Web-serverdagi dastur sessiyalar va holatlarni boshqarish uchun quyidagi umumiy cookie misollaridan foydalanadi:
- PHPSESSID
- JSESSIONID
- ASP.NET_SessionID
Ushbu qiymatlar serverda ma'lum bir holatni, ko‘pincha sessiya deb ataladi, ifodalaydi. Ushbu holat quyidagilarni o‘z ichiga oladi:
- Qaysi foydalanuvchi sifatida tizimga kirganingiz
- Imtiyozlar va ruxsatlar
Sessiya qiymati, Mijozga yuborilgan, osonlikcha taxmin qilinishi yoki boshqa shaxslar tomonidan aniqlanishi mumkin emas bo‘lishi muhimdir. Agar ular aniqlanishi mumkin bo‘lsa, tajovuzkor web dasturda boshqa foydalanuvchi sifatida o‘zini namoyon qilishi mumkin.
Holat shuningdek mijozda saqlanishi mumkin. Bu server barcha holatlarni mijozga yuborishini va mijoz barcha elementlarni qaytarishini talab qiladi. Bunday amalga oshirilish shifrlashga tayanadi, bu holatning yaxlitligini tekshiradi. Bunday amalga oshirish misollari quyida keltirilgan:
- JWT ("JSON Web Tokens")
- ASP.Net ViewState
Siz bu darsni cookie'lar orqali foydalanasiz! Brauzeringizda cookie'larni tekshirishingiz mumkin, bu uchun ishlab chiquvchilar asboblarini oching. Buni brauzer ichida F12 tugmasini bosish orqali amalga oshirishingiz mumkin, ishlab chiquvchilar asboblari oynasini oching. Ushbu oynada cookie'laringiz saqlangan to‘g‘ri joyni topishingiz kerak bo‘ladi.
Google Chrome’da cookie'lar Application tabida aniqlangan.
Eslatma
Nega cookie'lar skrinshetda yashirilganligini o‘ylab ko‘rishingiz mumkinmi?
Virtual Xostlar
Bir web-server ko‘plab dasturlarni Virtual Xostlar orqali ishlov berishi mumkin, odatda Vhosts deb qisqartiriladi. Boshqa Virtual Xostlarga kirishni osonlashtirish uchun web-server odatda mijoz so‘rovining Host sarlavhasini o‘qiydi va ushbu qiymatga asoslanib so‘rovni to‘g‘ri dasturga yuboradi.
URL Kodlash
Ilova server va mijoz o‘rtasida kontentni xavfsiz uzatish uchun ba'zi belgilar kodlanishi kerak, shunda ular protokolga ta'sir qilmasligi ta'minlanadi. Aloqalarni to‘g‘ri saqlash uchun URL kodlash ishlatiladi.
URL kodlash xavfsiz bo‘lmagan belgilarni % va ikkita heksadecimal raqam bilan almashtiradi. Masalan:
- Foiz %25 bilan almashtiriladi
- Bo‘shliq %20 bilan almashtiriladi
- Iqtibos %22 bilan almashtiriladi
Matn tahlili va URL dekodlash kabi operatsiyalarni bajarish uchun ajoyib vosita CyberChef hisoblanadi. Uni brauzeringizda sinab ko‘rishingiz mumkin: CyberChef
Eslatma
CyberChef bilan o‘ynang va quyidagi URL kodlangan belgilar xabarini qanday ochishni ko‘ring: %48 %65 %6c %6c %6f %20 %64 %65 %61 %72 %20 %77 %33 %73 %63 %68 %6f %6f %6c %73 %20 %73 %74 %75 %64 %65 %6e %74 %2e %20 %48 %6f %70 %65 %20 %79 %6f %75 %20 %61 %72 %65 %20 %6c %65 %61 %72 %6e %69 %6e %67 %20 %73 %6f %6d %65 %74 %68 %69 %6e %67 %20 %74 %6f %64 %61 %79 %21
JavaScript
Dinamik kontentni qo‘llab-quvvatlash uchun brauzerlar JavaScript skript tili yordamida ishlaydi. Bu dasturchilarga mijozda ishlaydigan echimlarni dasturlash imkonini beradi, bu esa interaktiv va "tirik" web-kontent yaratadi.
JavaScript ko‘plab web-ilovalar va mijoz ilovalariga, masalan, brauzerlarga qarshi hujumlarda ham ishtirok etadi.
TLS bilan Shifrlash
HTTP protokoli uzatish vaqtida shifrlashni qo‘llab-quvvatlamaydi, shuning uchun HTTP atrofida shifrlashni qo‘llab-quvvatlash uchun qoplama qo‘shiladi. Bu HTTPS yordamida ko‘rsatiladi.
Avval shifrlash SSL ("Secure Sockets Layer") yordamida amalga oshirilgan, ammo hozirda bu o‘rniga TLS ("Transport Layer Security") odatda shifrlashni amalga oshirish uchun ishlatiladi.