Zasada dotycząca tej samej domeny

Mariko Kosaka

Zasada tego samego pochodzenia to funkcja zabezpieczeń przeglądarki, która ogranicza, dokumenty i skrypty w jednym źródle mogą wchodzić w interakcje z zasobami w innym miejscu.

Przeglądarka może wczytywać i wyświetlać zasoby z wielu witryn jednocześnie. Być może masz jednocześnie otwartych wiele kart lub w witrynie może znajdować się wiele elementów iframe w różnych witrynach. Jeśli nie ma ograniczeń dotyczących interakcji między tymi zasobami a skrypt zostanie przejęty przez atakującego, może nie ujawniać wszystkiego z przeglądarki użytkownika.

Zasada tej samej domeny temu zapobiega, blokując dostęp z możliwością odczytu do zasobów wczytanych z innego źródła. „Ale poczekaj”, mówisz „Wczytuję obrazy a skrypty z innych źródeł przez cały czas”. Przeglądarki pozwalają na umieszczanie zasobów z innego źródła. Ta zasada ma głównie charakter historyczny i może narażać witrynę na ryzyko, takie jak atak hakerski za pomocą elementów iframe. Możesz ograniczyć odczyt z innych domen tych tagów za pomocą funkcji Content Security Zasady.

Co jest uznawane za tę samą pochodzenie?

Źródło jest określone przez schemat (nazywany też protokołem, np. HTTP lub HTTPS), port (jeśli został określony) i host. Gdy wszystkie trzy są takie same w przypadku 2 adresów URL są uznawane za pochodzące z tej samej domeny. Przykład: http://www.example.com/foo jest tym samym pochodzeniem co http://www.example.com/bar ale nie https://www.example.com/bar ponieważ schemat jest inny.

Co jest dozwolone, a co blokowane?

Ogólnie dozwolone jest umieszczanie zasobów z innych domen podczas odczytywania zasób z innej domeny jest zablokowany.

Elementy iframe Umieszczanie z innych domen jest zazwyczaj dozwolone (w zależności od dyrektywy X-Frame-Options), ale odczyt z innych domen (np. używanie JavaScriptu do uzyskiwania dostępu do dokumentu w elemencie iframe) nie jest.
CSS Międzyźródłowy kod CSS można umieścić za pomocą elementu <link> lub @import w pliku CSS. Może być wymagany prawidłowy nagłówek Content-Type.
formularze Adresy URL z innych domen mogą być używane jako wartość atrybutu action elementów formularza. Aplikacja internetowa może zapisywać dane formularza w miejscu docelowym w innej domenie.
zdjęcia Dozwolone jest umieszczanie obrazów z innych domen. Odczytywanie danych obrazów z innych domen (np. pobieranie danych binarnych z obrazu z innej domeny za pomocą JavaScriptu) jest jednak blokowane.
multimedia Treści wideo i audio z innych domen można umieszczać za pomocą elementów <video> i <audio>.
pismo Skrypty z innych domen można umieszczać. ale dostęp do niektórych interfejsów API (np. żądań pobierania z innych domen) może być blokowany.

DO ZROBIENIA: DevSite – test Think and Check

Jak zapobiegać przechwytywaniu kliknięć

clickjacking
Rysunek: Mechanizm do przechwytywania kliknięć przedstawiony w 3 osobnych warstwach (witryna podstawowa, witryna w elementach iframe, przezroczysty przycisk).

Atak nazywany „clickjackingiem” umieszcza stronę w obszarze iframe i nakładki przezroczyste przyciski, które odsyłają do innego miejsca docelowego. Użytkownicy są oszukani myślenie, że uzyskują oni dostęp do aplikacji, a jednocześnie wysyłają dane do osób przeprowadzających atak.

Aby zablokować innym witrynom możliwość umieszczania Twojej witryny w elemencie iframe, dodaj treść zasady bezpieczeństwa w frame-ancestors dyrektywa do nagłówków HTTP.

Możesz też dodać X-Frame-Options do nagłówków HTTP dostępnych MDN , aby wyświetlić listę opcji.

Podsumowanie

Mam nadzieję, że poczuliśmy ulgę, że przeglądarki ciężko pracują jako detektyw bezpieczeństwa sieci. Mimo że przeglądarki starają się zapewnić bezpieczeństwo, blokując dostęp do zasobów, czasem chcesz uzyskać dostęp do zasobów z innych domen w aplikacji. Z następnego przewodnika dowiesz się więcej o udostępnianiu zasobów między serwerami z różnych domen (CORS) i jak poinformować przeglądarkę, że wczytywanie zasobów z innych domen jest tylko z zaufanych źródeł.