Najbardziej zaawansowana aplikacja do ochrony cybernetycznej dla Androida - Bitdefender Mobile Security & Antivirus

Pobierz

Bezpieczeństwo w InternecieCiekawostki

CORS – czym jest i jak wpływa na nasze bezpieczeństwo?

Piotr R

10 kwietnia 2024

CORS, czyli Cross-Origin Resource Sharing, to standard bezpieczeństwa, który umożliwia serwerom wskazanie źródeł, z których przeglądarki mogą żądać zasobów. Standard ten został stworzony w celu udoskonalenia polityki tego samego pochodzenia (SOP), której używają przeglądarki, aby uniemożliwić złośliwym aplikacjom dostęp do wrażliwych danych w domenach, których nie kontrolują.

Zespół do spraw cyberbezpieczeństwa

CORS ma bardzo duży wpływ na nasze bezpieczeństwo w sieci, więc zespół Bitdefender postanowił stworzyć artykuł, w którym przyjrzymy się temu, co to jest CORS i dlaczego jest dla nas tak istotny. Następnie przeanalizujemy korzyści i najlepsze praktyki dotyczące skutecznego wdrażania CORS.

Czym jest polityka tego samego pochodzenia (SOP)?

Aby zrozumieć, czym jest CORS, w pierwszej kolejności musimy zrozumieć politykę (SOP). Zasady tego samego pochodzenia (SOP) to funkcja zabezpieczeń przeglądarki, która ogranicza sposób uzyskiwania dostępu do zasobów przez różne aplikacje internetowe. Ta zasada wymaga, aby zasób pochodził z tego samego źródła, co aplikacja internetowa próbująca uzyskać do niego dostęp.

Aby dwa źródła zostały uznane za takie same, muszą mieć tego samego hosta, schemat i port. Weźmy na przykład ten adres URL: https://bitdefender.pl. Schemat to HTTPS, host to bitdefender.pl.

Pochodzenie ze schematem „http” to nie to samo, co skądinąd identyczne pochodzenie ze schematem „https”. Jednak https:/bitdefender.pl ma to samo pochodzenie co, https://bitdefender.pl/blog/, ponieważ mają ten sam schemat, host i port.

Chociaż SOP ogranicza dostęp do zasobów z różnych źródeł, jest bardziej liberalny w przypadku niektórych typów zasobów, w tym:

  • Obrazy: Strony internetowe mogą bez żadnych ograniczeń osadzać obrazy dowolnego pochodzenia.
  • Arkusze stylów CSS: Zewnętrzny CSS można załadować na stronę internetową, używając znacznika linku bezpośrednio w kodzie HTML lub reguły @import w innym pliku arkusza stylów.
  • Skrypty: Pliki JavaScript można ładować i wykonywać z dowolnego źródła, ale mogą one uzyskiwać dostęp do elementów DOM i manipulować nimi tylko ze źródła, w którym zostały załadowane. Podlegają one ograniczeniom SOP i nie mogą wykonywać zewnętrznych wywołań API między źródłami.
  • Pliki multimedialne: Pliki audio i wideo można osadzać i odtwarzać z różnych źródeł za pomocą znaczników video lub audio.
  • Ramki iframe: Osadzone ramki iframe mogą ładować treść z dowolnego źródła, ale SOP izoluje zawartość ramki iframe od zawartości strony nadrzędnej. Element iframe może komunikować się ze swoją stroną nadrzędną za pomocą interfejsu udostępnianego przez JavaScript, ale nie ma bezpośredniego dostępu do zasobów strony nadrzędnej, ponieważ nie mają one tego samego źródła.

Jak działa Cross Origin?

Chociaż polityka tego samego pochodzenia, która jest ściśle zaimplementowana po stronie klienta, ustala domyślne ograniczenie dostępu do niektórych zasobów, CORS umożliwia serwerom hostującym te zasoby określenie, komu chcą przyznać dostęp. Zastępuje zatem ograniczenia nałożone w ramach SOP na te zasoby. CORS wykorzystuje nagłówki żądań i odpowiedzi HTTP do komunikacji z serwerem zasobów i uzyskiwania od niego pozwolenia.

Żądania CORS – co to i dlaczego są konieczne?

Istnieją dwa podstawowe typy żądań CORS: żądania proste i żądania inspekcji wstępnej.

Proste żądania to żądania CORS wysyłane jako część głównego żądania HTTP. Aby proste żądanie zostało wysłane do serwera, muszą zostać spełnione następujące kryteria:

  • Żądanie musi używać metody GET, HEAD lub POST HTTP.
  • Nagłówki żądań muszą być prostymi nagłówkami, czyli nagłówkami HTTP, które mogą być bezpiecznie ustawiane automatycznie przez programy użytkownika.
  • Jeśli żądanie korzysta z metody POST, która wskazuje, że żądanie ma treść żądania, nagłówek Content-Type musi mieć wartość „application/x-www-form-urlencoded, multipart/form-datalub text/plain.”

Żądania wstępne są znacznie bardziej złożone niż proste. Stosuje się je, gdy:

  • Oryginalne żądanie wykorzystuje metodę inną niż GET, HEAD lub POST. Zazwyczaj w tych żądaniach używane są metody DELETE i PUT.
  • Oryginalne żądanie używa typów zawartości innych niż „application/x-www-form-urlencoded, multipart/form-datalub text/plain” w żądaniach POST.
  • Przeglądarka wysyła do serwera żądanie wstępnej inspekcji dotyczące wszelkich działań powodujących mutację danych. Dzieje się tak, ponieważ żądania aktualizacji danych nie są uważane za bezpieczne, więc przeglądarka najpierw sprawdza, czy serwer zezwala na CORS, zanim sama wyśle żądanie.

Żądanie wstępnej kontroli wykorzystuje metodę HTTP OPTIONS w celu potwierdzenia, że serwer zezwoli na pierwotne żądanie. Przeglądarka zawiera także następujące nagłówki z żądaniami inspekcji wstępnej:

  • Access-Control-Request-Method: Ten nagłówek zawiera metodę HTTP, która będzie używana, gdy przeglądarka wyśle rzeczywiste żądanie. Mówi serwerowi, czego się spodziewać, gdy zostanie złożone prawdziwe żądanie.
  • Access-Control-Request-Headers: To jest lista nagłówków, które zostaną wysłane wraz z rzeczywistym żądaniem, łącznie z niestandardowymi nagłówkami żądań.

Jeśli żądanie wstępnej inspekcji zakończy się pomyślnie, a przeglądarka potwierdzi, że serwer zezwala na CORS, faktyczne żądanie zostanie wysłane do serwera. W przeciwnym razie przeglądarka nie wykona żądania i zamiast tego otrzyma błąd Cross-Origin.

Jakie są korzyści ze współpracy z CORS?

CORS poprawia ogólny stan bezpieczeństwa aplikacji, poprawiając jednocześnie elastyczność i interoperacyjność. Do jego głównych zalet należą:

  • Zwiększone bezpieczeństwo interfejsu API: CORS pomaga zapobiegać wysyłaniu przez złośliwe aplikacje nieautoryzowanych żądań między źródłami do wrażliwych zasobów w innej domenie. Łagodząc zasady tego samego pochodzenia (SOP) i wymagając wyraźnego pozwolenia za pośrednictwem nagłówków CORS, zmniejsza to ryzyko ataków typu cross-site request forgery (CSRF) i nieautoryzowanego dostępu do danych.
  • Uwierzytelnianie między źródłami: CORS umożliwia bezpieczne uwierzytelnianie między źródłami i zezwala na przesyłanie poświadczeń (takich jak pliki cookie lub tokeny uwierzytelniające) w żądaniach między źródłami. Jest to niezbędne w przypadku pojedynczego logowania (SSO) i innych mechanizmów uwierzytelniania.
  • Standaryzacja: CORS to ustandaryzowany mechanizm obsługiwany przez wszystkie główne przeglądarki internetowe. Ta jednolita implementacja we wszystkich przeglądarkach zapewnia spójne i niezawodne podejście do obsługi żądań pochodzących z różnych źródeł.
  • Integracja API: CORS jest niezbędny do integracji aplikacji internetowych z zewnętrznymi interfejsami API, umożliwiając programistom korzystanie z funkcjonalności stron trzecich we własnych usługach.

Jakie są najlepsze praktyki wdrażania Cross-Origin?

Chociaż CORS został zaprojektowany tak, aby bezpiecznie zastąpić zasady tego samego pochodzenia, wiąże się to z własnymi względami bezpieczeństwa. Niewłaściwe wdrożenie CORS może narazić Twoją aplikację na ryzyko naruszenia bezpieczeństwa danych i ujawnienia wrażliwych danych. Poniżej przedstawiamy najlepsze praktyki z zakresu cyberbezpieczeństwa CORS od zespołu Bitdefender:

  • Unikaj zaśmiecania pamięci podręcznej: Jeśli nagłówek serwera Access-Control-Max-Age jest ustawiony na długi czas, a odpowiedź jest buforowana, w kolejnych żądaniach mogą zostać użyte nieaktualne uprawnienia, co prowadzi do potencjalnych problemów z bezpieczeństwem. Upewnij się, że w Access-Control-Max-Age ustawiono umiarkowany czas trwania (domyślny i zalecany czas trwania to pięć sekund).
  • Bądź wyraźny: Nie zaleca się używania symboli wieloznacznych (*). Zamiast tego jawnie określ źródła, które mogą uzyskiwać dostęp do zasobów serwera, używając nagłówka Access-Control-Allow-Origin. Powinieneś także jawnie określić dozwolone metody i nagłówki za pomocą Access-Control-Allow-Methods i Access-Control-Allow-Headers. Używaj symboli wieloznacznych tylko wtedy, gdy jesteś pewien, że chcesz, aby interfejs API był dostępny z dowolnego źródła.
  • Dołącz prawidłowe nagłówki CORS: Upewnij się, że serwer zawiera wszystkie niezbędne nagłówki w swojej odpowiedzi CORS. Niezastosowanie się do tego może narazić aplikację na zagrożenia bezpieczeństwa. Na przykład brak nagłówka Access-Control-Allow-Credentials może być problematyczny, jeśli przeglądarka nie zwraca danych uwierzytelniających, kiedy powinna. Jeśli zostanie ustawiona na niezamierzoną wartość, przeglądarka może udostępniać dane uwierzytelniające niepożądanemu pochodzeniu.
  • Dokumentuj wszystko: Ważne jest odpowiednie udokumentowanie zasad CORS i udostępnienie ich programistom, którzy mogą zintegrować Twoje interfejsy API ze swoimi aplikacjami. Ta praktyka pomaga zapewnić lepszą obsługę programistów i buduje zaufanie wśród konsumentów interfejsu API.
  • Sprawdź poświadczenia: CORS domyślnie ignoruje poświadczenia. Jeśli chcesz uwzględnić poświadczenia (takie jak pliki cookie lub poświadczenia uwierzytelniania HTTP) w żądaniach między źródłami, ustaw Access-Control-Allow-Credentials na true. Należy jednak również upewnić się, że serwer sprawdza i bezpiecznie obsługuje poświadczenia.

Pamiętaj także o tym, aby zawsze zabezpieczyć wszystkie urządzenia, z których korzystasz za pomocą skutecznego programu antywirusowego. Dzięki temu nie tylko zabezpieczysz się przed złośliwym oprogramowaniem, które mogłoby wykraść Twoje dane uwierzytelniające, lecz także uchronisz się przed następstwami phishingu i ransomware. Jeśli chcesz poznać więcej możliwości programów antywirusowych Bitdefender, to sprawdź tę stronę.


Autor


Piotr R

Account Manager, od ponad roku pracuję w branży IT i od ponad 5 lat jestem copywriterem. Do moich zadań należy nawiązywanie współpracy partnerskich, pisanie i redagowanie tekstów, kontakt z dziennikarzami, tworzenie notatek prasowych oraz zamieszczanie ich na stronach internetowych i w naszych mediach społecznościowych. Wcześniej byłem przez kilka lat związany z branżą OZE oraz z technologiami telemetrycznymi i elektronicznymi. Interesuję się językoznawstwem, literaturą, grą na gitarze oraz branżą gier.

Zobacz posty autora


Artykuły które mogą Ci się spodobać

    Formularz kontaktowy

    Wybierz odpowiednią opcję aby przejść do formularza kontaktowego. Odpowiemy najszybciej jak to możliwe!

    klient-indywidualnyklient-biznesowyreseller

    Dane kontaktowe




    stalynowy