Web Applications

...

SU

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

GET /search?q=udemere+cyber+security&ie=UTF-8 HTTP/1.1
Host: google.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Accept: image/avif,image/webp,image/apng,image/*,*/*;q=0.8
Referer: https://udemere.uz/
Accept-Encoding: gzip, deflate
Cookie: cookie1=value1;cookie2=value2

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:

SarlavhaTushuntirish
GET /search... HTTP/1.1GET - biz foydalanayotgan fe'l. Yo‘l va so‘rov parametrlarini ko‘rsatadi va HTTP versiyasini bildiradi
Host: google.comMaqsadli xizmatni ko‘rsatadi. Serverda bir nechta xizmatlar bo‘lishi mumkin
User-AgentMijoz dasturi (odatda brauzer) o‘zini versiya, dvigatel va operatsion tizim bilan tanishtiradi
AcceptMijoz 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, deflateKontent siqilishi yoki kodlanishi mumkinmi? Nimalarni qabul qilishimiz mumkinligini belgilaydi
CookieCookie'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/1.1 200 OK
Content-Type: text/html
Set-Cookie: <cookie value>
<website content>

HTTP javob sarlavhalari quyidagicha tushuntirilgan:

SarlavhaTushuntirish
HTTP/1.1 200 OKHTTP Javob kodi. Batafsil HTTP Javob Kodlari bo‘limida tushuntirilgan
Content-Type: text/htmlQaytarilayotgan 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 methodQanday ishlatiladi
GETOdatda So‘rov Parametrlari orqali qiymatlarni olish uchun ishlatiladi
POSTSo‘rov tanasi orqali ma'lumot yuborish uchun ishlatiladi. Odatda yaratish, yuklash yoki katta hajmdagi ma'lumotlarni yuborish
PUTOdatda web-serverga ma'lumotlarni yuklash yoki yozish uchun ishlatiladi
DELETEO‘chirilishi kerak bo‘lgan resursni ko‘rsatadi
PATCHResursni 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:

KodTushuntirish
200Dastur odatdagi holatda qaytarildi
301Server mijozni yangi manzilga doimiy ravishda yo‘naltirishni so‘raydi
302Vaqtinchalik yo‘naltirish. Mijoz bu javobni saqlashga hojat yo‘q
400Mijoz noto‘g‘ri so‘rov yubordi
403Mijoz ushbu resursga kirishga ruxsat etilmagan. Avtorizatsiya talab qilinadi
404Mijoz mavjud bo‘lmagan resursga kirishga harakat qildi
500Server 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:

ParametrIzoh
usersFunksionallikning foydalanuvchilar qismiga kirish
searchQidiruv xususiyatiga kirish
udemereQidirilishi 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.

Web Applications

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.

Web Applications

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.

Web Applications

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.

Ushbu sahifada

GitHubda tahrirlash