# Identifikatsiya, Autentifikatsiya va Avtorizatsiya Tushunchalari
## Asosiy Tushunchalar
### 1. Identifikatsiya (Identification)
Ta'rifi: Foydalanuvchi o'zini kim ekanligini bildirish jarayoni.
Misol:
- Foydalanuvchi nomi (username) kiritish
- Email manzil ko'rsatish
- ID raqam berish
Siz bankomatga boring va kartangizni qo'yasiz - bu identifikatsiya, chunki siz "Men Ahmadman" deb aytyapsiz.
### 2. Autentifikatsiya (Authentication)
Ta'rifi: Foydalanuvchi haqiqatan ham o'zi deb da'vo qilayotgan shaxs ekanligini tasdiqlash jarayoni.
Misol:
- Parol kiritish
- Barmoq izi skanerlash
- Yuz tanish teknologiyasi
Bankomatda kartangizni qo'ygandan keyin PIN kod kiritasiz - bu autentifikatsiya, ya'ni "Ha, men haqiqatan Ahmadman" deb isbotlaysiz.
### 3. Avtorizatsiya (Authorization)
Ta'rifi: Tasdiqlangan foydalanuvchiga nimalarni qilishga ruxsat berilganligini aniqlash jarayoni.
Misol:
- Fayl o'qish/yozish huquqlari
- Ma'lum sahifalarga kirish imkoniyati
- Ma'lum funksiyalardan foydalanish
PIN kodni to'g'ri kiritgandan keyin bankomat sizga "Siz 1 million so'm chiqarishingiz mumkin" deydi - bu avtorizatsiya.
---
## Autentifikatsiya Turlari
### 1. Bir Faktorli Autentifikatsiya (Single-Factor-Authentication)
Ta'rifi: Faqat bitta tasdiqlash usuli ishlatiladi.
Misol:
- Faqat parol
- Faqat barmoq izi
- Faqat smart karta
Afzalliklari:
- Sodda va tez
- Kam xarajat talab qiladi
Kamchiliklari:
- Past xavfsizlik darajasi
- Parol o'g'irlansa, hamma narsa xavf ostida
### 2. Ikki Faktorli Autentifikatsiya (Two-Factor Authentication - 2FA)
Ta'rifi: Ikki xil tasdiqlash usuli ishlatiladi.
Misol:
- Parol + SMS kod
- Parol + barmoq izi
- Karta + PIN kod
Faktorlar turlari:
1. Bilgan narsangiz (Something you know): parol, PIN
2. Ega bo'lgan narsangiz (Something you have): telefon, karta
3. O'zingizning xususiyatingiz (Something you are): barmoq izi, yuz
### 3. Ko'p Faktorli Autentifikatsiya (Multi-Factor Authentication - MFA)
Ta'rifi: Ikki yoki undan ko'p tasdiqlash usuli ishlatiladi.
Misol:
- Parol + SMS + barmoq izi
- Karta + PIN + yuz tanish
- Parol + ilova kodi + ovoz tanish
---
## OTP va TOTP
### OTP (One-Time Password)
Ta'rifi: Faqat bir marta ishlatila oladigan parol.
Xususiyatlari:
- Har safar yangi kod
- Ma'lum vaqt ichida amal qiladi
- Takrorlanmaydi
Misol: Bankdan kelgan SMS dagi 6 raqamli kod
### TOTP (Time-based One-Time Password)
Ta'rifi: Vaqtga bog'liq holda yaratilgan bir martalik parol.
Qanday ishlaydi:
1. Har 30-60 sekund yangilanadi
2. Maxsus algoritm orqali yaratiladi
3. Server va mijoz bir xil vaqtni ishlatadi
Misol: Google Authenticator, Authy ilovalari
Afzalliklari:
- Internet kerak emas
- Juda xavfsiz
- Tez ishlaydi
---
## OpenID
### OpenID nima?
Ta'rifi: Bir marta ro'yxatdan o'tib, ko'plab saytlarda foydalanish imkonini beruvchi texnologiya.
### Qanday ishlaydi?
1. Siz Google/Facebook/Apple orqali ro'yxatdan o'tasiz
2. Boshqa saytlarga kirishda "Google orqali kirish" tugmasini bosasiz
3. Google sizni tasdiqlaydi
4. Sayt sizni qabul qiladi
### Afzalliklari:
- Ko'p parol eslab qolish kerak emas
- Tez va qulay
- Xavfsizroq (katta kompaniyalar yaxshi himoya qiladi)
### Kamchiliklari:
- Asosiy hisob buzilsa, hamma narsaga ta'sir qiladi
- Shaxsiy ma'lumotlar kuzatilishi mumkin
---
## Session (Sessiya)
### Session nima?
Ta'rifi: Foydalanuvchi saytga kirgandan chiqguncha davom etadigan vaqt oralig'i.
### Qanday ishlaydi?
1. Siz saytga kirasiz (login qilasiz)
2. Server sizga maxsus ID (session ID) beradi
3. Bu ID cookie sifatida saqlanadi
4. Har safar sahifa ochganingizda bu ID jo'natiladi
5. Server bu ID orqali sizni taniydi
### Session turlari:
1. Server-side session: Ma'lumotlar serverda saqlanadi
2. Client-side session: Ma'lumotlar brauzerda saqlanadi
3. Distributed session: Bir nechta serverda saqlanadi
### Session xavfsizligi:
- Session hijacking: Boshqa odam sizning session ID ni o'g'irlashi
- Session fixation: Hujumchi oldindan session ID o'rnatishi
- Session timeout: Ma'lum vaqtdan keyin session o'chishi
### Himoya usullari:
- HTTPS ishlatish
- Session ID ni muntazam yangilash
- Timeout o'rnatish
- IP manzil tekshirish
---
## Amaliy Misollar
### Bank tizimi:
1. Identifikatsiya: Karta kiritish
2. Autentifikatsiya: PIN kod + barmoq izi
3. Avtorizatsiya: Balansni ko'rish, pul chiqarish ruxsati
4. Session: Tranzaksiya davomida faollik
### Email xizmati:
1. Identifikatsiya: Email manzil
2. Autentifikatsiya: Parol + SMS kod
3. Avtorizatsiya: Inbox, yuborish, o'chirish huquqlari
4. Session: Kirganingizdan chiqguncha faollik
### Mobil ilova:
1. Identifikatsiya: Telefon raqam
2. Autentifikatsiya: OTP kod + biometric
3. Avtorizatsiya: Profil, sozlamalar, to'lov huquqlari
4. Session: Ilovada faol bo'lish vaqti
Bu tushunchalar zamonaviy axborot xavfsizligining asosini tashkil etadi va har bir dasturchi uchun juda muhimdir.
https://leetcode.com/problems/add-binary
kki ikkilik satr a va b berilgan bo'lsa, ularning yig'indisini binary string sifatidab qaytaring .
1-misol:
Kirish: a = "11", b = "1"
Chiqish: "100"
2-misol:
Kirish: a = "1010", b = "1011"
Chiqish: "10101"
#leetCode
kki ikkilik satr a va b berilgan bo'lsa, ularning yig'indisini binary string sifatidab qaytaring .
1-misol:
Kirish: a = "11", b = "1"
Chiqish: "100"
2-misol:
Kirish: a = "1010", b = "1011"
Chiqish: "10101"
#leetCode
📌
JavaScript’da:
Hech narsa bo‘lmasa — bu o‘nlik (decimal)
0b prefiks nimani bildiradi?JavaScript’da:
0b — ikkilik son (binary) ekanini bildiradi.0x — o‘n oltilik (hexadecimal)0o — sakkizlik (octal)Hech narsa bo‘lmasa — bu o‘nlik (decimal)
Masalan:
Bu 1010 binary sonini o‘nlikka aylantirib, BigInt turiga o‘tkazadi.
BigInt("0b1010") // => 10nBu 1010 binary sonini o‘nlikka aylantirib, BigInt turiga o‘tkazadi.
✅ 1-qadam: 0b${a} va 0b${b}
Bu yerda:
a va b — ikkilik (binary) ko‘rinishdagi matnlar (masalan, "1010", "110").
0b${a} — bu matnni binary son sifatida tanitish uchun ishlatiladi.
Masalan: 0b1010 → 10 (o‘nlikda)
✅ 2-qadam: BigInt(...)
BigInt("0b1010") — bu binary stringni katta son (BigInt) ko‘rinishiga o‘tkazadi.
Biz bu yerda ikkita sonni: BigInt(aBin) + BigInt(bBin) yig‘amiz.
✅ 3-qadam: .toString(2)
Bu yerda natijani yana binary formatga o‘tkazamiz.
Masalan:
16n.toString(2) → "10000"
🎯 Xulosa:
Bu kod a va b degan ikkilik matnlarni oladi, ularni binary son sifatida yig‘adi, va natijani yana binary string sifatida qaytaradi.
Bu yerda:
a va b — ikkilik (binary) ko‘rinishdagi matnlar (masalan, "1010", "110").
0b${a} — bu matnni binary son sifatida tanitish uchun ishlatiladi.
Masalan: 0b1010 → 10 (o‘nlikda)
✅ 2-qadam: BigInt(...)
BigInt("0b1010") — bu binary stringni katta son (BigInt) ko‘rinishiga o‘tkazadi.
Biz bu yerda ikkita sonni: BigInt(aBin) + BigInt(bBin) yig‘amiz.
✅ 3-qadam: .toString(2)
Bu yerda natijani yana binary formatga o‘tkazamiz.
Masalan:
16n.toString(2) → "10000"
🎯 Xulosa:
Bu kod a va b degan ikkilik matnlarni oladi, ularni binary son sifatida yig‘adi, va natijani yana binary string sifatida qaytaradi.
(10).toString() // "10" — default, o‘nlik
(10).toString(2) // "1010" — ikkilik (binary)
(10).toString(16) // "a" — o‘n oltilik (hex)
(10).toString(8) // "12" — sakkizlik (octal)
Forwarded from Dr. Algorithm
Talabnoma
Shu hafta ajoyib voqea bo‘ldi. Yoshlar bilan o‘tirib turli loyihalar haqida gaplashdik. Maqsad shaxsiy loyiha qilishni o‘rganish edi.
Loyihalardan biri Telegamda bot yasash mavzusida edi. Man bitta gap bilan qisqa mazmunini yozgan edim.
Ertasiga guruhda loyihani tugatganini aytib qoldi. Kodini ko‘rsatishni so‘radim. Telegram botning kodi. Ishlaydigan kod.
Kod yoza olgani uchun xursand bo‘ldim. Lekin masalaning mohiyatini tushunmasdan qilgani uchun xafa edim. Chunki u yasagan bot umuman boshqa mavzuda edi.
~~
Requirement gathering
Kuzatuvlarim shuni bermoqda: Bizda talabni bilmasdan kod yozishga o‘tib ketish juda ko‘p ekan.
Loyiha olish vaqtida albatta uni qilishni o‘ylamang. Uning talablarini o‘rganing.
Mabodo mos kelib qolsa, omadli ekansiz, Omad shou o‘ynaydigan holat bo‘libdi, deyman.
Buni faqat talaba dasturchilar emas, ishlab turgan dasturchi jamoalarda ham kuzatdim. Nasib qilsa endi ular ham o‘zgarishadi. Chunki biz talablarni o‘rganishni boshlasak, biznes egasi bizga aniq talablarni berishni boshlaydi. Bizga ham, unga ham oson bo‘ladi.
~~
P.S. Har bir post rasmli bo‘lsa qiziq tuyuladi. Shunga rasmda 2-Jahon urushining eng katta kashfiyotlaridan biri, Enigma mashinasini qo‘ydim. Bu shifrlash sohasida qilingan ulkan yutuqlardan biri.
Angliya Harbiy Havo kuchlari muzeyiga borganda ko‘rgan edim. Bu 2 marta rostakam Enigma mashinasini ko‘rishim. O‘zbekistonda Aloqa muzeyida ham bitta bo‘lishi kerak.
Kuningiz xayrli o‘tsin. Rejalaringiz unumli bajarilsin.
05.08.2025 London
@DrAlgorithm
Shu hafta ajoyib voqea bo‘ldi. Yoshlar bilan o‘tirib turli loyihalar haqida gaplashdik. Maqsad shaxsiy loyiha qilishni o‘rganish edi.
Loyihalardan biri Telegamda bot yasash mavzusida edi. Man bitta gap bilan qisqa mazmunini yozgan edim.
Ertasiga guruhda loyihani tugatganini aytib qoldi. Kodini ko‘rsatishni so‘radim. Telegram botning kodi. Ishlaydigan kod.
Kod yoza olgani uchun xursand bo‘ldim. Lekin masalaning mohiyatini tushunmasdan qilgani uchun xafa edim. Chunki u yasagan bot umuman boshqa mavzuda edi.
Requirement gathering
Kuzatuvlarim shuni bermoqda: Bizda talabni bilmasdan kod yozishga o‘tib ketish juda ko‘p ekan.
Loyiha olish vaqtida albatta uni qilishni o‘ylamang. Uning talablarini o‘rganing.
Mizojga aslida nima kerak ekanini aniq so‘rab oling. Sizning taxminlar bilan mijozning xohishlari mos kelmaydi.
Mabodo mos kelib qolsa, omadli ekansiz, Omad shou o‘ynaydigan holat bo‘libdi, deyman.
Loyiha boshlashda birinchi shart:
1. Mijozning talablarini o‘rganish.
Buni faqat talaba dasturchilar emas, ishlab turgan dasturchi jamoalarda ham kuzatdim. Nasib qilsa endi ular ham o‘zgarishadi. Chunki biz talablarni o‘rganishni boshlasak, biznes egasi bizga aniq talablarni berishni boshlaydi. Bizga ham, unga ham oson bo‘ladi.
P.S. Har bir post rasmli bo‘lsa qiziq tuyuladi. Shunga rasmda 2-Jahon urushining eng katta kashfiyotlaridan biri, Enigma mashinasini qo‘ydim. Bu shifrlash sohasida qilingan ulkan yutuqlardan biri.
Angliya Harbiy Havo kuchlari muzeyiga borganda ko‘rgan edim. Bu 2 marta rostakam Enigma mashinasini ko‘rishim. O‘zbekistonda Aloqa muzeyida ham bitta bo‘lishi kerak.
Kuningiz xayrli o‘tsin. Rejalaringiz unumli bajarilsin.
05.08.2025 London
@DrAlgorithm
bu qoida nafaqat biror dastur yaratishda balki algorithmik masalalarini yechishda ham qo'llanishi kerak.
Masala shartini tushunish yechimning 80 foizidir
Masala shartini tushunish yechimning 80 foizidir
Forwarded from Botir Ziyatov
Google Jules rasman ishga tushdi
U Gemini 2.5 Pro asosida ishlaydi, GitHub bilan bog'lana oladi va kodni avtomatik tuzatish imkoniyatini beradi.
Narxi:
- Bepul: kuniga 15 ta vazifa
- Pro ($20/oy): Google AI Pro paketi bilan birga
- Ultra versiyasi esa $125
@botirziyatov
U Gemini 2.5 Pro asosida ishlaydi, GitHub bilan bog'lana oladi va kodni avtomatik tuzatish imkoniyatini beradi.
Narxi:
- Bepul: kuniga 15 ta vazifa
- Pro ($20/oy): Google AI Pro paketi bilan birga
- Ultra versiyasi esa $125
@botirziyatov
Forwarded from Xamidullo Xudoyberdiyev (Xudoyberdiyev Xamidullo Ulug'bek o'g'li)
🔰 Javascript cheat sheet
This is the latest Javascript cheat sheet. Save it and share with your friends.
It contain variables, data types, operators, functions, conditional statements, loops and DOM manipulation
@thelazy_programmer
This is the latest Javascript cheat sheet. Save it and share with your friends.
It contain variables, data types, operators, functions, conditional statements, loops and DOM manipulation
@thelazy_programmer