Zasada dotycząca tej samej domeny to funkcja zabezpieczeń przeglądarki, która ogranicza możliwość interakcji dokumentów i skryptów z jednego źródła z zasobami z innego źródła.
Przeglądarka może ładować i wyświetlać zasoby z wielu witryn jednocześnie. Możesz mieć otwartych wiele kart jednocześnie lub witryna może zawierać wiele elementów iframe z różnych witryn. Jeśli nie ma ograniczeń interakcji między tymi zasobami, a haker przejął kontrolę nad skryptem, może on ujawnić wszystko, co znajduje się w przeglądarce użytkownika.
Zasada dotycząca tej samej domeny uniemożliwia to, blokując dostęp w trybie odczytu do zasobów wczytywanych z innego źródła. „Ale zaraz” – mówisz: „Cały czas wczytuję obrazy i skrypty z innych źródeł”. Przeglądarki pozwalają na umieszczanie zasobów z innych źródeł. Ta zasada jest głównie artefaktem historycznym i może narażać witrynę na luki w zabezpieczeniach, np. przesyłanie kliknięć za pomocą elementów iframe. Możesz ograniczyć odczyt tych tagów z innych domen za pomocą polityki bezpieczeństwa treści.
Co jest uznawane za tę samą pochodzenie?
Źródło jest definiowane przez schemat (nazywany też protokołem, np. HTTP lub HTTPS), port (jeśli został określony) i host. Gdy 2 adresy URL są takie same, uznaje się je za tę samą witrynę. Na przykład http://www.example.com/foo
jest tym samym źródłem co http://www.example.com/bar
, ale nie https://www.example.com/bar
, ponieważ schemat jest inny.
Co jest dozwolone, a co zablokowane?
Zasadniczo umieszczanie zasobów z innych domen jest dozwolone, ale odczyt zasobów z innych domen jest zablokowany.
Elementy iframe |
Umieszczanie na stronach z innych domen jest zazwyczaj dozwolone (w zależności od dyrektywy X-Frame-Options ), ale odczyt z innych domen (np. za pomocą JavaScriptu do uzyskiwania dostępu do dokumentu w elemencie iframe) jest już zakazany.
|
CSS |
Źródła CSS z innych domen 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 formularzy. Aplikacja internetowa może zapisywać dane formularza w innym miejscu docelowym.
|
zdjęcia | Umieszczanie obrazów z innych domen jest dozwolone. Jednak odczyt danych obrazów z innych domen (np. pobieranie danych binarnych z obrazów z innych domen za pomocą JavaScriptu) jest zablokowany. |
multimedia |
Materiały wideo i audio z innych domen można umieszczać na stronach, używając 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ć zablokowany. |
DO ZROBIENIA: DevSite – ocena „Think and Check”
Jak zapobiegać przenoszeniu kliknięć
W ataku typu „clickjacking” strona jest umieszczona w elemencie iframe
i nakładana przezroczyste przyciski, które prowadzą do innego miejsca docelowego. Użytkownicy mogą sądzić, że korzystają z Twojej aplikacji, a jednocześnie wysyłają dane do atakujących.
Aby zablokować innym witrynom możliwość umieszczania Twojej witryny w elemencie iframe, dodaj do nagłówków HTTP politykę bezpieczeństwa treści z dyrektywą frame-ancestors
.
Możesz też dodać X-Frame-Options
do nagłówków HTTP w sekcji MDN, gdzie znajdziesz listę opcji.
Podsumowanie
Mam nadzieję, że poczuje się pewna ulga, że przeglądarki ciężko pracują, by chronić bezpieczeństwo w sieci. Choć przeglądarki starają się blokować dostęp do zasobów, czasami chcesz uzyskać w swoich aplikacjach dostęp do zasobów z innych domen. Z następnego przewodnika dowiesz się, jak działa udostępnianie zasobów między serwerami (CORS) i jak poinformować przeglądarkę, że ładowanie zasobów z innych domen jest dozwolone z zaufanych źródeł.