Origin — web xavfsizlik modelida resource yoki document manbasini scheme, host va port kombinatsiyasi orqali aniqlaydigan tushuncha. Browser ikki URL bir xil origin’ga tegishli yoki yo‘qligini shu uch komponent asosida baholaydi.
Umumiy ko‘rinish:
scheme + host + port
Masalan:
https://example.com:443
path, query va fragment origin tarkibiga kirmaydi.
Bir xil origin
Quyidagi URLlar bir xil origin’ga ega:
https://example.com/a
https://example.com/b?page=2
https://example.com/c#part
Ularning scheme, host va effective porti bir xil.
Path farqi same-origin statusini o‘zgartirmaydi.
Turli scheme
Quyidagilar boshqa origin:
http://example.com
https://example.com
Host bir xil bo‘lsa ham scheme farqli.
HTTPS document HTTP resource bilan ishlaganda mixed content va security cheklovlariga duch kelishi mumkin.
Turli host
Quyidagilar alohida origin:
https://example.com
https://api.example.com
Subdomain bir xil parent domain ostida bo‘lsa ham host to‘liq farq qiladi.
CORS yoki boshqa controlled communication talab qilinadi.
Turli port
Port farqi originni o‘zgartiradi:
https://example.com:443
https://example.com:8443
Default port explicit yozilmasa effective port scheme’dan olinadi.
https://example.com va https://example.com:443 odatda bir origin sifatida qaraladi.
Same-Origin Policy
Browser same-origin policy orqali bir origindagi scriptning boshqa origindagi sensitive resource’ni o‘qishini cheklaydi.
Bu malicious sayt user login qilgan bank yoki email service data’sini bevosita o‘qib olmasligi uchun asosiy himoya.
Policy DOM, Fetch, storage va boshqa API’larda turli shaklda ishlaydi.
Network request
Browser cross-origin request yuborishi ayrim holatda mumkin.
Masalan, image yoki form request.
Asosiy cheklov script response’ni o‘qishi va custom request yuborishiga tegishli.
CORS serverga kontrolli ruxsat berish imkonini beradi.
CORS
Cross-Origin Resource Sharing server response headerlari orqali qaysi originlarga response’ni o‘qishga ruxsat berilishini belgilaydi.
Masalan:
Access-Control-Allow-Origin: https://app.example.com
Origin aniq tekshiriladi.
Credential bilan wildcard ruxsat xavfli va ko‘p holatda mos emas.
Origin header
Browser ayrim requestlarda:
Origin: https://app.example.com
headerini yuboradi.
Server CORS va CSRFga oid tekshiruvlarda undan foydalanishi mumkin.
Header scheme, host va portni beradi, pathni emas.
Referer bilan farqi
Referer ko‘pincha oldingi sahifa URLining bir qismini beradi.
Origin header esa faqat originni ifodalaydi va ma’lum request turlarida yuboriladi.
Privacy policy Referer detailini kamaytirishi mumkin.
Security tekshiruvi ikkala signalning mavjudlik qoidalarini bilishi kerak.
Opaque origin
Ba’zi document yoki context an’anaviy scheme-host-port originiga ega emas va opaque origin olishi mumkin.
Masalan, ayrim sandboxed iframe yoki data: document.
Opaque origin boshqa origin bilan teng deb hisoblanmaydi.
Serializationda nullga o‘xshash qiymat ko‘rinishi mumkin.
File origin
file: URLlar uchun origin behavior browser va platformaga qarab maxsus bo‘lishi mumkin.
Local file’larning bir-biriga accessi security sabab cheklanadi.
Web application productionda file: origin semanticsga tayanmaydi.
Sandbox iframe
Iframe sandbox atributi orqali unique opaque origin olishi mumkin, agar same-origin ruxsati berilmasa.
Bu embedded contentning cookie, storage va parent DOMga accessini cheklaydi.
allow-scripts va allow-same-origin kombinatsiyasi ehtiyotkor ishlatiladi.
Storage isolation
localStorage va IndexedDB origin bo‘yicha ajratiladi.
https://app.example.com storage’i https://api.example.comga avtomatik ko‘rinmaydi.
Port yoki scheme o‘zgarsa ham boshqa storage namespace hosil bo‘ladi.
Cookie bilan farqi
Cookie scope origin bilan aynan bir xil emas.
Cookie domain va path atributlariga ega, port bo‘yicha ajratilmaydi.
Shu sababli same-origin va cookie rules’ni bir tushuncha deb qabul qilish noto‘g‘ri.
postMessage
Turli origin window yoki iframe’lar postMessage orqali nazoratli xabar almashishi mumkin.
Yuboruvchi aniq target origin beradi.
Qabul qiluvchi:
event.origin;event.source;- message schema
ni tekshiradi.
Wildcard faqat public va xavfsiz ma’lumot uchun ishlatiladi.
WebSocket
WebSocket handshake Origin headerini o‘z ichiga olishi mumkin.
Server browserdan kelgan connection uchun allowed originlarni tekshiradi.
WebSocket CORS bilan aynan bir xil mexanizmga ega emas.
Authentication va CSRFga o‘xshash cross-site xavflar alohida baholanadi.
Cache
Response origin va CORS headeriga qarab browserga ochiladi.
Dynamic allowed origin ishlatilsa cache Vary: Originga o‘xshash boshqaruv talab qilishi mumkin.
Aks holda bir origin uchun response headeri boshqa origin requestiga cache’dan berilishi ehtimoli bor.
Security
Origin allowlist:
- to‘liq parser bilan tekshiriladi;
- exact scheme;
- exact host;
- exact port;
- wildcard subdomain qoidasi;
nullorigin;- trailing dot;
- Unicode domain
holatlarini hisobga oladi.
String contains yoki noto‘g‘ri suffix tekshiruvi bypassga olib kelishi mumkin.
Site bilan farqi
Origin scheme, host va portga qat’iy bog‘liq. Site tushunchasi esa browser cookie va ayrim privacy qoidalarida registrable domain hamda scheme asosida kengroq guruh bo‘lishi mumkin. Ikki subdomain cross-origin, lekin same-site bo‘lishi ehtimoli bor. SameSite cookie va Same-Origin Policy shu sababli bir xil chegarani ishlatmaydi.
Bog‘liq tushunchalar
Web origin, Same-Origin Policy, CORS, Origin header, Scheme, Host, Port, Opaque origin, postMessage, Browser security