CyberSecurity | Same Origin Policy

Nail Mammadov
Human Computer Interaction LAB
5 min readJan 10, 2021

Eyni Mənşə Siyasəti

Məzmun

  1. Same-origin Policy nədir?
  2. Ümumiyyətlə origin anlayışı
  3. EMS tətbiqi
  4. EMS-i idarəetmə
  5. Preflight istəkləri
  6. EMS yetərincə təhlükəsizdirmi?
  7. Faydalı mənbələr

SAME-ORİGİN POLİCY NƏDİR?

Same-Origin Policy (SOP) — Azərbaycan dilinə Eyni Mənşə Siyasəti və ya Qaydası kimi tərcümə olunur (bu məqalədə qısaca EMS olaraq istifadə olunmuşdur).

EMS veb səhifələt və veb tətbiqetmələr arasındakı məlumatlara girişə nəzarət edən və veb brauzerlər tərəfindən tətbiq olunan bir qaydadır. EMS olmadan hər hansı bir veb səhifə digər səhifələrin DOM-a daxil ola bilər. Bu isə başqa bir veb səhifədəki potensial həssas məlumatlara daxil olmasına və istifadəçinin razılığı olmadan digər veb səhifələrdə hərəkətlər etməsinə imkan yaradır.

EMS bir İnternet standartı və ya sabit bir qayda deyil, əksinə ümumi bir brauzer təhlükəsizlik siyasətidir. Fərqli brauzerlər tərəfindən fərqli şəkildə şərh olunur. Fərqli texnologiyalar üçün də fərqli işləyir, lakin ümumi fikir eyni olaraq qalır: saytlararası icazəsiz girişin olmadığından əmin olmaq.

BƏS BU ORİGİN ( MƏNŞƏ) NƏDİR?

Veb baxımından mənşə bir veb mənbənin ümumi xüsusiyyətlərinin məcmusudur.

Əksər hallarda mənşə üç elementin birləşməsidir: schema (protokol), host adı (domen və ya subdomen) və port. Bu üç elementdən biri belə fərqli olarsa, Google Chrome və ya Mozilla Firefox kimi müasir brauzerlər bunu fərqli mənşəli hesab edir. Yalnız Microsoft Internet Explorer portu mənşənin bir hissəsi hesab etmir. Misal üçün:

http://www.ornek.az/page.htmlhttp://www.ornek.az/subpage/page2.html

HTML sənədləri eyni mənşəlidir: protokol HTTP, domen www.ornek.com, və port 80-dir.

· http://www.ornek.az/page.htmlhttps://www.ornek.az/page.html, fərqli bir protokola (HTTP vs HTTPS) malikdir. Buna görə fərqli mənşəlidir.

· http://www.ornek.az/page.htmlhttp://ornek.az/page.html fərqli mənşəlidir, çünki subdomen (hostname) fərqlidir (www.ornek.az və ornek.az).

· http://www.example.com/page.htmlhttp://www.example.com/page.html:8080, fərqli bir porta görə fərqli bir mənşəyə sahibdir (80 vs 8080).

Internet Explorer-da bu nümunə eyni mənşəli sayılır.

EMS TƏTBİQİ

Mənşə yoxlamaları brauzer tərəfindən müxtəlif mənşəli elementlər arasındakı potensial qarşılıqlı əlaqədə tətbiq olunur. Buraya, əsasən, aşağıdakılar daxildir, lakin bunlarla da məhdudlaşmır:

JavaScript kodu və Document Object Model (DOM), bir səhifə eyni mənşəli olmadıqca iframe-nin məzmununa daxil ola bilməz.

Çərəzlər, müəyyən bir sayt üçün sessiya çərəzləri fərqli mənşəli bir səhifəyə göndərilə bilməz. Əlavə olaraq bunu da qeyd edək ki, çərəzlər üçün schema və port qiymətləndirilmir, yalnız domen və ya subdomen yoxlanılır.

AJAX istəkləri (XmlHTTPRequest).

Qeyd edim ki, EMS fərqli mənşələr arasındakı qarşılıqlı əlaqəni tamamilə aradan qaldırmır, brauzer bu qarşılıqlı əlaqənin təhlükə yarada biləcəyini qiymətləndirir, təhlükə olmadığı halda buna icazə verilir.

EMS-NİN TƏSİR GÜCÜNÜ NECƏ AZALTMAQ OLAR (idarə etmək)

Bəzi hallarda, EMS-nin gülcü tutuşunu zəiflətmək və müəyyən fərqli mənşələr üçün qarşılıqlı əlaqəyə icazə vermək istəyə bilərsiniz. Adətən, bu hər ikisi də sizə məxsus olan fərqli domenlər arasındakı mənşə fərqliliyini olduqda lazım olur. Belə hallarda, EMS-nin veb tətbiqetmələrarası qarşılıqlı təsir imkanlarına mane olmamasını təmin edə biləcəyiniz bir neçə yol var.

Mənşəni elan etmək

Saytınızın mənşəyini dəyişdirməyin ən sadə yolu JavaScript istifadə edərək elan etməkdir:

EMS-nin belə idarə olunması yalnız eyni domenə malik saytlar üçün mümkündür. Bu sadə metodu, məsələn, login.ornek.az, blog.ornek.az, və s. kimi müxtəlif alt domenlərdən istifadə edərək istifadə edə bilərsiniz.

Çapraz mənşəli qaynaq paylaşımı

Çapraz mənşəli Resurs Paylaşımı (CORS) mənşə icazələrini təyin etmək üçün HTTP başlıqlarını istifadə edən bir HTTP mexanizmidir. CORS başlıqlarını istifadə edərək brauzerə başqa mənşəli mənbələrin səhifənizdəki mənbələrə daxil olmaq hüquqlarına malik olduğunu bildirə bilərsiniz.

Məsələn, bir səhifəyə GET tələbi, tam mənşəyi bildirən bir mənşə sorğusu başlığı ilə göndərilə bilər (bu metod da sadədir, document.domain-ə oxşayır):

Təbii ki, CORS-u dəstəkləyən resurs, cavab olaraq, Access-Control-Allow-Origin cavab başlığını göndərir:

QEYD: Access-Control-Allow-Origin tək bir mənşəni, mənşə siyahısını və ya wildcard-ı elan edə bilir, wildcard elanı isə olduqca risklidir.

Preflight İstəkləri

Yuxarıdakı sadə sxem veb brauzerin təhlükəsiz hesab etdiyi istəklər üçün istifadə olunur. Daha riskli istəklər üçün veb brauzer əvvəlcə xüsusi Preflight istəyi istifadə edərək mənşəli rabitə əlaqəsinə icazə verildiyindən əmin olur. Preflight tələb olunan məqamlar isə, əsasən, aşağıdakılardır:

  1. İstəkdə xüsusi bir HTTP başlığı varsa (header except Accept, Accept-Language, Content-Language, Content-Type, DPR, Downlink, Save-Data, Viewport-Width, Width)

2. İstəyin metodu PUT, DELETE, CONNECT, OPTIONS, TRACE və ya PATCH olarsa

3. İstək bir POST istəyi olsa da, Məzmun növü mətn və ya form-məlumat deyilsə

4. XMLHttpRequestUpload-da ən azı bir event listener qeydiyyatdan keçibsə

5. İstəkdə bir ReadableStream obyektindən istifadə edilibsə

Başqa sözlə desək, preflight istəyi CORS başlıqlarına sahib bir OPTIONS istəyidir:

Cavab olaraq, server, brauzerə hansı metodlara icazə verildiyini, başlıqları qəbul edib qəbul etmədiyini və preflight istəyinin nə qədər müddətdə etibarlı olduğunu bildirir:

Preflight başa çatdıqdan sonra etibarlılıq müddəti daxilində müntəzəm istəklər göndərilə bilər.

BƏS EMS HÜCUMLARIN QARŞISINI ALMAĞA KİFAYƏT EDİRMİ?

EMS sözsüz ki, təhlükəsizliyi artırır, lakin ən əsas olaraq, fərqli mənşələrdən faydalanmaq cəhdi olan bütün CSRF hücumlarının qarşısını almaq üçün kifayət deyil. Buna görə anti-CSRF tokenləri hələ də əlavə bir qoruma forması kimi istifadə edilməlidir. EMS, saytlararası Scriptingdən (XSS) qorunma metodu olaraq tamamilə faydasızdır, çünki fərqli saytlardan skript yüklənməsini məhdudlaşdırdığımız zaman veb tətbiqetmələrin işinə tamamilə mane oluruq.

Bu səbəbdən, EMS açıq-aşkar görünənlərə qarşı təsirli bir qoruma vasitəsi olsa da, davamlı bir qoruma mexanizmi hesab edilə bilməz.

Nurlan Garash

BUTA.İO komandasının yazarı : Nurlan Garash

--

--