Політика того ж походження (англ. same origin policy) — важливе поняття в програмуванні скриптів на стороні клієнта (наприклад в мові JavaScript). Політика дозволяє скриптам, які працюють на сторінках, що згенеровані на одному сайті, отримати доступ до методів та атрибутів один одного без особливих обмежень, але забороняє доступ до більшості методів та властивостей на сторінках інших сайтів.
Цей механізм дуже важливий для сучасних вебзастосунків, які покладаються на куки для зберігання даних сесій авторизованих користувачів, і дія серверів залежить від інформації, що зберігається в куках. На стороні клієнта повинно бути суворе відмежування від даних, наданим непов'язаними сайтами, щоб запобігти втраті конфіденційних даних.
Історія
Політика того ж походження з'явилась ще в часи Netscape Navigator 2.0. Пізніше вона поширилась на інші скриптові мови, наприклад Adobe Flash, чи на механізми окрім прямої маніпуляції DOM, такі як XMLHttpRequest.
Правила визначення джерела
Термін «походження» (англ. origin) визначається через доменне ім'я, протокол прикладного рівня, та (в більшості браузерах) номер порту HTML документа який виконує скрипт. Два ресурси мають однакове походження тоді і тільки тоді коли кожне з цих значень для них однакове. Для прикладу, наступна таблиця дає огляд типових результатів перевірок для URL «http://www.example.com/dir/page.html».
URL з яким порівнюють | Результат | Причина |
---|---|---|
http://www.example.com/dir/page.html | Успішно | Однаковий протокол і хост |
http://www.example.com/dir2/other.html | Успішно | Однаковий протокол і хост |
http://www.example.com:81/dir/other.html | Невдача | Різні порти |
https://www.example.com/dir/other.html | Невдача | Різні протоколи |
http://en.example.com/dir/other.html | Невдача | Різні хости |
http://example.com/dir/other.html | Невдача | Різні хости (потрібен повний збіг) |
http://v2.www.example.com/dir/other.html | Невдача | Різні хости (потрібен повний збіг) |
Додаткова логіка document.domain
Важливим розширенням до політики того ж джерела, реалізованим для доступу до DOM в JavaScript (але не для інших перевірок єдиності походження) є те, що два сайти, які мають спільний домен вищого рівня, можуть ухвалити рішення про комунікацію попри невдачу перевірки на єдиність хоста, спільно присвоївши відповідним атрибутам document.domain
однаковий підходящий фрагмент правої сторони їх поточних доменних імен.
Наприклад, якщо http://en.example.com/ та http://fr.example.com/ разом присвоять document.domain
значення «example.com», вони будуть вважатись одного походження під час маніпуляцій з DOM.
Крайні випадки та винятки
Поведінка перевірки збігу походжень та пов'язані механізми не дуже добре описані в численних крайових випадках, наприклад для протоколів, що не мають добре означеного доменного імені чи порту пов'язаними з їх URL (file://, data://, і т. ін.). Це спричинило велику кількість проблем з безпекою, таких як загалом небажана здатність будь-якого локального HTML файлу мати доступ до інших файлів на диску чи спілкуватись з будь-яким сайтом в інтернеті.
На додачу, багато застарілих крос-доменних операцій, що передували JavaScript, не піддаються перевіркам на походження даних; одним з прикладів є здатність імпортувати скрипти з інших доменів (JSONP) чи відправляти POST форми. JSONP є популярною крос-доменною альтернативою XMLHttpRequest (Ajax).
Обхідні шляхи
Щоб дозволити розробникам у контрольований спосіб обійти політику єдиного походження, існують багато хаків, таких як використання ідентифікатора фрагмента, чи використання властивості window.name
для передачі даних між документами з різних доменів. У стандарті HTML5 створено офіційний інтерфейс postMessage
, який щоправда доступний тільки на нових браузерах. Також для AJAX-подібних запитів до інших доменів можна використовувати технології JSONP та Cross-Origin Resource Sharing.
Для підтримки старіших браузерів можна використовувати бібліотеку easyXDM, яка надає API до інтерфейсу postMessage
та інших хаків що використовуються для крос-доменного обміну повідомленнями (англ. Cross Domain Messaging (XDM)).
Див. також
Зноски
- . Архів оригіналу за 27 січня 2017. Процитовано 9 жовтня 2011.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - Blog Post: Using CORS with all (modern) browsers. Архів оригіналу за 15 липня 2013. Процитовано 9 жовтня 2011.
- . Архів оригіналу за 30 травня 2013. Процитовано 23 березня 2022.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title ()
Посилання
- Детальне порівняння кількох видів політик одного джерела [ 19 серпня 2016 у Wayback Machine.] (англ.)
- Означення поняття «походження» в специфікаціях HTML5 [ 10 жовтня 2011 у Wayback Machine.] (англ.)
- Специфікація політики того ж походження від Mozilla [ 11 липня 2007 у Wayback Machine.] (англ.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
U Vikipediyi ye statti pro inshi znachennya cogo termina Politika znachennya Politika togo zh pohodzhennya angl same origin policy vazhlive ponyattya v programuvanni skriptiv na storoni kliyenta napriklad v movi JavaScript Politika dozvolyaye skriptam yaki pracyuyut na storinkah sho zgenerovani na odnomu sajti otrimati dostup do metodiv ta atributiv odin odnogo bez osoblivih obmezhen ale zaboronyaye dostup do bilshosti metodiv ta vlastivostej na storinkah inshih sajtiv Cej mehanizm duzhe vazhlivij dlya suchasnih vebzastosunkiv yaki pokladayutsya na kuki dlya zberigannya danih sesij avtorizovanih koristuvachiv i diya serveriv zalezhit vid informaciyi sho zberigayetsya v kukah Na storoni kliyenta povinno buti suvore vidmezhuvannya vid danih nadanim nepov yazanimi sajtami shob zapobigti vtrati konfidencijnih danih IstoriyaPolitika togo zh pohodzhennya z yavilas she v chasi Netscape Navigator 2 0 Piznishe vona poshirilas na inshi skriptovi movi napriklad Adobe Flash chi na mehanizmi okrim pryamoyi manipulyaciyi DOM taki yak XMLHttpRequest Pravila viznachennya dzherelaTermin pohodzhennya angl origin viznachayetsya cherez domenne im ya protokol prikladnogo rivnya ta v bilshosti brauzerah nomer portu HTML dokumenta yakij vikonuye skript Dva resursi mayut odnakove pohodzhennya todi i tilki todi koli kozhne z cih znachen dlya nih odnakove Dlya prikladu nastupna tablicya daye oglyad tipovih rezultativ perevirok dlya URL http www example com dir page html URL z yakim porivnyuyut Rezultat Prichinahttp www example com dir page html Uspishno Odnakovij protokol i hosthttp www example com dir2 other html Uspishno Odnakovij protokol i hosthttp www example com 81 dir other html Nevdacha Rizni portihttps www example com dir other html Nevdacha Rizni protokolihttp en example com dir other html Nevdacha Rizni hostihttp example com dir other html Nevdacha Rizni hosti potriben povnij zbig http v2 www example com dir other html Nevdacha Rizni hosti potriben povnij zbig Dodatkova logika document domainVazhlivim rozshirennyam do politiki togo zh dzherela realizovanim dlya dostupu do DOM v JavaScript ale ne dlya inshih perevirok yedinosti pohodzhennya ye te sho dva sajti yaki mayut spilnij domen vishogo rivnya mozhut uhvaliti rishennya pro komunikaciyu popri nevdachu perevirki na yedinist hosta spilno prisvoyivshi vidpovidnim atributam document domain odnakovij pidhodyashij fragment pravoyi storoni yih potochnih domennih imen Napriklad yaksho http en example com ta http fr example com razom prisvoyat document domain znachennya example com voni budut vvazhatis odnogo pohodzhennya pid chas manipulyacij z DOM Krajni vipadki ta vinyatkiPovedinka perevirki zbigu pohodzhen ta pov yazani mehanizmi ne duzhe dobre opisani v chislennih krajovih vipadkah napriklad dlya protokoliv sho ne mayut dobre oznachenogo domennogo imeni chi portu pov yazanimi z yih URL file data i t in Ce sprichinilo veliku kilkist problem z bezpekoyu takih yak zagalom nebazhana zdatnist bud yakogo lokalnogo HTML fajlu mati dostup do inshih fajliv na disku chi spilkuvatis z bud yakim sajtom v interneti Na dodachu bagato zastarilih kros domennih operacij sho pereduvali JavaScript ne piddayutsya perevirkam na pohodzhennya danih odnim z prikladiv ye zdatnist importuvati skripti z inshih domeniv JSONP chi vidpravlyati POST formi JSONP ye populyarnoyu kros domennoyu alternativoyu XMLHttpRequest Ajax Obhidni shlyahiShob dozvoliti rozrobnikam u kontrolovanij sposib obijti politiku yedinogo pohodzhennya isnuyut bagato hakiv takih yak vikoristannya identifikatora fragmenta chi vikoristannya vlastivosti window name dlya peredachi danih mizh dokumentami z riznih domeniv U standarti HTML5 stvoreno oficijnij interfejs postMessage yakij shopravda dostupnij tilki na novih brauzerah Takozh dlya AJAX podibnih zapitiv do inshih domeniv mozhna vikoristovuvati tehnologiyi JSONP ta Cross Origin Resource Sharing Dlya pidtrimki starishih brauzeriv mozhna vikoristovuvati biblioteku easyXDM yaka nadaye API do interfejsu postMessage ta inshih hakiv sho vikoristovuyutsya dlya kros domennogo obminu povidomlennyami angl Cross Domain Messaging XDM Div takozhCross Origin Resource Sharing Mizhsajtovij skripting XSS Cross site request forgeryZnoski Arhiv originalu za 27 sichnya 2017 Procitovano 9 zhovtnya 2011 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Blog Post Using CORS with all modern browsers Arhiv originalu za 15 lipnya 2013 Procitovano 9 zhovtnya 2011 Arhiv originalu za 30 travnya 2013 Procitovano 23 bereznya 2022 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya PosilannyaDetalne porivnyannya kilkoh vidiv politik odnogo dzherela 19 serpnya 2016 u Wayback Machine angl Oznachennya ponyattya pohodzhennya v specifikaciyah HTML5 10 zhovtnya 2011 u Wayback Machine angl Specifikaciya politiki togo zh pohodzhennya vid Mozilla 11 lipnya 2007 u Wayback Machine angl