CORS Úvod pre začiatočníkov

Zaujíma vás, čo je CORS (Cross-Origin Resource Sharing)?


V špionážnych filmoch majú bezpečnostní pracovníci kódovaný spôsob prenosu informácií medzi sebou. Pretože väčšinou prenášajú informácie, ktoré sa proti nim dajú použiť, ak to patrí do rúk ich nepriateľov, musia sa ubezpečiť, že tí, ktorí tieto informácie dostávajú, sú dôveryhodnými stranami. To isté platí pre tých, ktorí posielajú uvedené informácie. Ak je odosielateľovi a príjemcovi dôvera, je možné zaručiť dôveryhodnosť a bezpečnosť informácií.

https://pt.slideshare.net/atirekgupta/selenium-workshop-34820044

Replika tohto scenára sa vyskytuje pri komunikácii medzi prehliadačmi a webovými servermi a nazýva sa politika rovnakého pôvodu.

Podľa MDN:

 politika rovnakého pôvodu je kritický bezpečnostný mechanizmus, ktorý obmedzuje, ako môže dokument alebo skript načítaný z jedného pôvodu interagovať so zdrojom z iného pôvodu. Pomáha izolovať potenciálne škodlivé dokumenty a redukuje možné vektory útoku.

Čo je CORS?

V prípade skutočných udalostí, keď bezpečnostní pracovníci vydávajú pravidlo, že komunikácia by sa mala uskutočňovať iba medzi jej pracovníkmi ako prostriedok bezpečnosti, je to podobné politike rovnakého pôvodu. Môžu sa však vyskytnúť prípady, keď budú musieť interagovať s vonkajším svetom. Alebo s pracovníkmi iných bezpečnostných odevov, aby sa to stalo, môžu implementovať ďalšie bezpečnostné opatrenie overiť títo robotníci. Toto overenie môže prísť rôznymi spôsobmi v závislosti od zúčastnených pracovníkov. V prípade komunikácie na internete, Corsy je mechanizmus, ktorý umožňuje prehliadačom používať prístup k zdrojom, ktoré pôvodne nebudú môcť, pretože zdroj je iného pôvodu.

Cross-Origin Resource Sharing (CORS) je mechanizmus, ktorý používa ďalšie hlavičky HTTP na to, aby prehliadačom poskytol webovým aplikáciám bežiacim pri jednom pôvode prístup k vybraným zdrojom z iného pôvodu..

O pôvode som hovoril viackrát a pravdepodobne sa čudujete, čo to znamená. Pôvod je definovaný protokolom, doménou a portom adresy URL. Ak máte svoje API na počiatku ako https://api.geekflare.com:3001 a váš frontend na https://geekflare.com, pôvod sa považuje za odlišný. V tejto situácii budete potrebovať CORS, aby ste mali prístup k zdrojom na oboch koncoch.

Ak sú žiadosti adresované serveru, prehľadávače (klient) a servery odosielajú žiadosti a odpovede, sú zahrnuté hlavičky HTTP. Medzi týmito hlavičkami sú zahrnuté ďalšie hlavičky, ktoré bránia prehľadávaču blokovať komunikáciu.

Prečo prehliadač zablokuje komunikáciu?

Jeho funkcie zabezpečenia prehliadača. Urobí tak, ak žiadosť pochádza z iného pôvodu, ako je pôvod klienta. Dodatočné hlavičky zahrnuté v dôsledku CORS sú spôsobom, ako povedať klientovi, že môže využiť odpoveď, ktorú dostal.

Hlavičky CORS

Jeden z bezpečných hlavičiek, ktorým môže byť buď hlavička odpovede, alebo hlavička žiadosti.

Hlavičky odpovedí

Toto sú hlavičky, ktoré server pošle späť vo svojej odpovedi.

  • Access-Control-Allow-Origin:: Používa sa na určenie pôvodu, ktorý má povolený prístup k prostriedku na serveri. Je možné určiť, že sú povolené iba žiadosti od konkrétneho pôvodu – Access-Control-Allow-Origin: https://geekflare.com, alebo že na pôvode nezáleží – Access-Control-Allow-Origin: *.
  • Záhlavia riadenia prístupu-vystavenia:: Ako už názov napovedá, je uvedený zoznam hlavičiek, ku ktorým má prehliadač prístup.
  • Access-Control-Max-Age:: Toto označuje trvanie, počas ktorého môže byť odpoveď na požiadavku pred výstupom uložená do vyrovnávacej pamäte.
  • Povolenia na kontrolu prístupu – povoľovanie:: To znamená, že prehliadač môže využiť odpoveď, keď bola pôvodná žiadosť podaná s poverením..
  • Metódy prístupu k riadeniu prístupu:: Toto označuje metódu (metódy), ktoré sa povolili pri pokuse o prístup k prostriedku.
  • Záhlavia riadenia prístupu – Povolenia:: Toto naznačuje, že hlavičky HTTP sa môžu použiť v žiadosti.

Tu je príklad, ako bude vyzerať reakcia

HTTP / 1.1 204 Žiadny obsah
Povolenie prístupu-kontrola-povolenie: *
Metódy umožňujúce riadenie prístupu: GET, HEAD, PUT, PATCH, POST, DELETE
Rôzne: Hlavičky žiadostí o prístup a kontrolu
Hlavičky povolenia prístupu: Povolené, typ obsahu
Dĺžka obsahu: 0
Dátum: So, 16. november 2019 11:41:08 GMT + 1
Spojenie: udržujte nažive

Vyžiadať hlavičky

Tu sú hlavičky, ktoré by mala obsahovať požiadavka klienta, aby bolo možné využiť mechanizmus CORS.

  • Pôvod:: Toto označuje pôvod žiadosti klienta. Pri práci s frontendom a backendom, ako je uvedené vyššie, bude hostiteľom vašej frontendovej aplikácie.
  • Metóda žiadosti o kontrolu prístupu: Táto metóda sa používa v žiadosti o kontrolu pred výstupom na označenie metódy HTTP, ktorá sa použije na vytvorenie žiadosti..
  • Hlavičky žiadosti o prístupové riadenie:: Používa sa v žiadosti o kontrolu pred výstupom na označenie hlavičiek HTTP, ktoré sa použijú na vytvorenie žiadosti..

Tu je príklad, ako bude vyzerať žiadosť

curl -i -X ​​OPTIONS localhost: 3001 / api \
-H ‘Metóda žiadosti o kontrolu prístupu: GET’ \
-H ‘Hlavičky žiadosti o prístup k riadeniu: Typ obsahu, Prijať’ \
-H ‘Pôvod: http: // localhost: 3000’

Žiadosti o kontrolu pred výstupom

https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

Čo by to mohlo znamenať, keď tu a tam spomeniem žiadosti o kontrolu pred výstupom?

Žiadosti o kontrolu pred výstupom sa vyskytnú, keď klient musí odoslať žiadosť o kontrolu pred výstupom pred hlavnou požiadavkou. Žiadosť o kontrolu pred výstupom je skôr sonda aby ste zistili, či server podporuje hlavnú požiadavku, ktorá sa chystá. Po získaní pozitívneho potvrdenia sa odošle hlavná žiadosť.

Ak žiadosť nie je žiadosťou o predbežnú kontrolu, nazýva sa a jednoduchá žiadosť.

Implementácia CORS

Väčšinou budete chcieť nastaviť veci na pozadí vašej aplikácie. Implementácia závisí od rámca, ktorý používate. V tomto návode sa pozrieme na to, ako to urobiť v NodeJS a Rails.

Rails

Odporúčam vám využiť rack-mier gem. Potom ho budete musieť pridať do súboru config / application.rb.

config.middleware.insert_before 0, Rack :: Cors
dovoliť
pôvod ‘*’
zdroj ‘*’,
hlavičky:: akékoľvek,
vystaviť:% i (uid klient typu token s prístupovým tokenom),
metódy:% i (získať možnosti odstránenia záplat umiestniť záplatu),
poverenia: pravda
koniec
koniec

NodeJS

V Node.js to bude vyzerať takto.

app.all (“*”, (req, res, next) => {
res.header („Access-Control-Allow-Origin“, „*“);
res.header („Metódy prístupu a riadenia prístupu“, „PUT, GET, POST, DELETE, PATCH, OPTIONS HEAD“);
res.header („Hlavičky prístupu, riadenia a prístupu“, „*“);
res.header („Povolenia na kontrolu prístupu – povoľte“, true);
Ďalšie();
});

V útržku kódu nastavujeme pôvod, metódy, hlavičky a poverenia, ktoré by mali mať prístup k zdrojom dostupným na našom serveri. Môžete tiež zaplatiť Sqreen ktorý poskytuje modul bezpečnostných hlavičiek na integráciu do aplikácií Ruby, PHP, Python, Java, Go, Node.JS. A implementáciu v Apache alebo Nginx nájdete v tejto príručke.

záver

CORS uvoľňuje pravidlá, aby váš prehliadač mal prístup k zdrojom, ktoré chcete. Pochopenie toho, čo to je, prečo je to nevyhnutné a ako ho nastaviť, pomôže pri zisťovaní problémov, s ktorými sa môžete stretnúť pri vytváraní webových aplikácií..

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map