CORS Introduksjon for nybegynnere

Lurer på hva som er CORS (ressursdeling for andre opprinnelser)?


I spionfilmer har sikkerhetsaktører en kodet måte å overføre informasjon mellom seg. Siden de stort sett overfører informasjon som kan brukes mot dem hvis den faller i hendene til deres fiender, må de sørge for at de som mottar informasjonen er pålitelige parter. Det samme gjelder de som sender nevnte informasjon. Når avsender og mottaker er klarert, kan informasjonens troverdighet og sikkerhet garanteres.

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

En kopi av dette scenariet skjer i kommunikasjonen mellom nettlesere og webservere, og det kalles politikk av samme opprinnelse.

I følge MDN:

De politikk av samme opprinnelse er en kritisk sikkerhetsmekanisme som begrenser hvordan et dokument eller skript lastet fra en opprinnelse kan samhandle med en ressurs fra en annen opprinnelse. Det hjelper til med å isolere potensielt skadelige dokumenter, og reduserer mulige angrepsvektorer.

Hva er CORS?

I en virkelig sak, når sikkerhetsoperatører gir en regel om at kommunikasjon bare skal skje blant operativene som et sikkerhetsmiddel, ligner det på samme opprinnelsespolitikk. Likevel kan det være tilfeller der de vil trenge å samhandle med omverdenen. Eller med operatører av andre sikkerhetsantrekk, for at det skal skje, kan de iverksette et annet sikkerhetstiltak til bekrefte de operative. Denne bekreftelsen kan komme på forskjellige måter, avhengig av de involverte operativene. Ved kommunikasjon på Internett, kor er mekanismen som gjør det mulig for nettlesere å bruke ressurser som de opprinnelig ikke vil være i stand til fordi ressursen er av en annen opprinnelse.

Cross-Origin Resource Sharing (CORS) er en mekanisme som bruker flere HTTP-overskrifter for å fortelle nettlesere om å gi et webapplikasjon som kjører med ett opphav, tilgang til utvalgte ressurser fra en annen opprinnelse.

Jeg har snakket om opprinnelse mer enn en gang, og du lurer sikkert på hva det betyr. Et opphav er definert av protokollen, domenet og porten til nettadressen. Når du har API-en din med et opphav som https://api.geekflare.com:3001 og frontend på https://geekflare.com, sies opprinnelsen å være annerledes. I denne situasjonen trenger du CORS for å kunne få tilgang til ressurser i begge ender.

Når forespørsler sendes til en server, nettlesere (klient) og servere sender forespørsler og svar, er HTTP-headere inkludert. Blant disse overskriftene er flere overskrifter inkludert for å forhindre at nettleseren blokkerer kommunikasjonen.

Hvorfor vil nettleseren blokkere kommunikasjonen?

Sikkerhetsfunksjonene i nettleseren. Det vil gjøre det hvis forespørselen kommer fra en annen opprinnelse enn klienten. De ekstra overskriftene som er inkludert som et resultat av CORS, er en måte å fortelle klienten at den kan benytte seg av responsen den mottok.

CORS Headers

En av de sikre topptekstene som kan være svar eller be om topptekst.

Responsoverskrifter

Dette er overskriftene som serveren sender tilbake som svar.

  • Access-Control-Allow-Origin:: Dette brukes til å spesifisere opprinnelsen som skal få tilgang til ressursen på serveren. Det er mulig å spesifisere at bare forespørsler fra en spesifikk opprinnelse er tillatt – Access-Control-Allow-Origin: https://geekflare.com, eller at opprinnelsen ikke betyr noe – Access-Control-Allow-Origin: *.
  • Access-Control-Expose-Headers:: Som navnet tilsier, viser dette overskriftene nettleserne har tilgang til.
  • Access-Control-Max-Age:: Dette indikerer hvor lenge svaret fra en forhåndslysforespørsel kan bufres.
  • Access-Control-Allow-Credentials:: Dette indikerer at nettleseren kan bruke svaret når den første forespørselen ble sendt med en legitimasjon.
  • Access-Control-Allow-Methods:: Dette indikerer metoden / metodene som tillates når du prøver å få tilgang til en ressurs.
  • Access-Control-Allow-Headers:: Dette indikerer at HTTP-headers kan brukes i en forespørsel.

Her er et eksempel på hvordan responsen vil se ut

HTTP / 1.1 204 Ingen innhold
Access-Control-Allow-Origin: *
Access-Control-Tillat-metoder: GET, HEAD, PUT, PATCH, POST, DELETE
Varier: Access-Control-Request-Headers
Tilgangskontroll-Tillat-overskrifter: Innholdstype, godta
Innholdslengde: 0
Dato: Lør 16. nov 2019 11:41:08 GMT + 1
Tilkobling: hold i live

Be om overskrifter

Her er overskriftene som en klients forespørsel bør inneholde for å kunne bruke CORS-mekanismen.

  • Opprinnelse: Dette indikerer opprinnelsen til klientens forespørsel. Når du jobber med en frontend og backend, som tidligere nevnt, vil dette være verten for frontend-applikasjonen din.
  • Access-Control-Request-Method:: Dette brukes i en forhåndslysforespørsel for å indikere HTTP-metoden som skal brukes til å lage forespørselen.
  • Access-Control-Request-Headers:: Dette brukes i en forhåndslysforespørsel for å indikere HTTP-headere som skal brukes til å lage forespørselen.

Her er et eksempel på hvordan en forespørsel vil se ut

krøll -i -X ​​ALTERNATIVER localhost: 3001 / api \
-H ‘Access-Control-Request-Method: GET’ \
-H ‘Access-Control-Request-Headers: Content-Type, Accept’ \
-H ‘Opprinnelse: http: // localhost: 3000’

Forflytningsforespørsler

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

Etter å ha nevnt preflight-forespørsler hit og dit, hva kan det muligens bety?

Preflight-forespørsler skjer når klienten må sende en preflight-forespørsel før hovedforespørselen. Forhåndslysforespørselen er mer en sonde for å avgjøre om serveren støtter hovedforespørselen som er i ferd med å komme. Når positiv bekreftelse er oppnådd, sendes deretter hovedforespørselen.

Når en forespørsel ikke er en forhåndslysforespørsel, kalles den en enkel forespørsel.

Implementering av CORS

Du vil for det meste ønske å sette opp ting på baksiden av søknaden din. Implementeringen avhenger av rammene du bruker. For denne opplæringen vil vi se på hvordan du gjør det i NodeJS og Rails.

rails

Jeg anbefaler at du benytter deg av rack-kor perle. Da må du legge dette til config / application.rb-filen.

config.middleware.insert_before 0, Rack :: Cors do
tillat gjøre
opprinnelse ‘*’
ressurs ‘*’,
overskrifter:: hvilken som helst,
eksponere:% i (uid-klient for tilgangstoken utløpstoken-type),
metoder:% i (få innlegg for å slette alternativet for å slette oppdateringer),
legitimasjon: sant
slutt
slutt

NodeJS

I Node.js vil dette se slik ut.

app.all (‘*’, (req, res, next) => {
res.header (‘Access-Control-Allow-origin’, ‘*’);
res.header (‘Access-Control-Allow-Methods’, ‘PUT, GET, POST, DELETE, PATCH, OPTIONS HEAD’);
res.header (‘Access-Control-Allow-Headers’, ‘*’);
res.header (‘Access-Control-Allow-Credentials’, sant);
neste ();
});

I kodebiten setter vi opp opprinnelsen, metodene, overskriftene og legitimasjonsbeskrivelsene som skal få tilgang til ressursene som er tilgjengelige på serveren vår. Du kan også sjekke ut Sqreen som gir en modul for sikkerhetshode som skal integreres med Ruby, PHP, Python, Java, Go, Node.JS applikasjoner. Og for å implementere i Apache eller Nginx, se denne guiden.

Konklusjon

CORS slapper av policyen slik at nettleseren din får tilgang til ressursene du vil ha den til. Å forstå hva det er, hvorfor det er viktig, og hvordan du konfigurerer det, vil hjelpe deg med å finne ut av problemene du måtte møte når du bygger webapplikasjonene dine..

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Комментариев нет, будьте первым кто его оставит

    Комментарии закрыты.

    Adblock
    detector