Hva er egentlig en API-nøkkel? (Og er de trygge?)

"Hva er en API-nøkkel?" er et ofte stilt spørsmål når man jobber med API-er. API-er gjør det mulig for programvareprogrammer å samhandle med hverandre, dele data og integrere funksjonene sine. API-er muliggjør kommunikasjon mellom ellers frakoblede programvarer og er teknologien bak mange av de kraftige integrasjonene du bruker hver dag, men i motsetning til en samtale ansikt til ansikt er det vanskeligere for et API å verifisere om appen det kommuniserer med, er den den utgir seg for å være. API-er krever metoder for å identifisere klientene sine før de får passere, fordi de ofte eksponerer privat og sensitiv informasjon. API-nøkler er et slikt sikkerhetstiltak; de fungerer som et ID-kort for klienten som gjør en API-forespørsel, og hjelper API-er med å tildele passende tilgangstillatelser og spore hvordan dataene deres brukes.

Hvis du jobber med API-er eller markedsføringsintegrasjoner, bør du forstå hva API-nøkler er, hvordan de passer inn i API-sikkerheten, og hvorfor de ikke bør være det eneste beskyttelseslaget ditt. La oss forklare.

API-nøkler har generelt to hovedfunksjoner i en API-forespørsel:

  • Prosjektautentisering: API-nøkkelen identifiserer applikasjonen som ber om API-et og mottar forespørselen. Hvert prosjekt har en unik nøkkel for å skille det fra andre prosjekter.
  • Prosjektautorisasjon: API-nøkkelen forteller API-et om applikasjonen som ber om tilgang, har tillatelse til å bruke API-et, og hvilke av API-tjenestene den har tilgang til. Selv om en applikasjon har tilgang til et API, kan det hende at den bare har tillatelse til å bruke et begrenset sett av API-tjenestene.

API-et sjekker API-nøkkelen som oppgis i en forespørsel, mot klientdatabasen, og aksepterer eller avslår deretter forespørselen. Hvis forespørselen godtas, gir API-et klienten tilgang til data og funksjonalitet basert på tilgangsrettighetene som er knyttet til API-nøkkelen.

API-eiere bruker også API-nøkler til å overvåke API-aktivitet, for eksempel typer og volum av forespørsler fra individuelle klienter. Fordi hver forespørsel er knyttet til en nøkkel, kan API-eiere filtrere etter nøkkel og se alle forespørsler fra en bestemt klient.

Denne overvåkingskapasiteten er avgjørende for å beskytte API-et mot ondsinnet trafikk. API-er blir ofte angrepet av hackere på ulike måter, for eksempel ved å forfalske legitimasjon for å injisere ondsinnet kode eller oversvømme API-serveren med forespørsler. Et API kan bruke nøkler til å eliminere anonym bot-trafikk eller blokkere forespørsler fra en bestemt bruker om nødvendig.

Det er viktig å merke seg at API-nøkler brukes til å identifisere prosjekt- og applikasjonsforespørsler, og ikke individuelle brukere. En API-nøkkel forteller API-et hvilket prosjekt forespørselen stammer fra, men den kan ikke identifisere spesifikke brukere med prosjekttilgang. Dette er en viktig sikkerhetsbegrensning som vi skal gå gjennom senere.

Slik bruker du en API-nøkkel

API-er krever vanligvis at utviklere skaffer seg en nøkkel før de kan sende forespørsler. Prosessen bør være dokumentert på API-utviklerens nettsted og inneholde all informasjonen du trenger for å komme i gang.

I de fleste tilfeller må du opprette en utviklerkonto ved å oppgi en e-postadresse og annen informasjon. Deretter blir du bedt om å registrere prosjektet ditt og oppgi eventuell prosjektinformasjon som API-eierne bør kjenne til.

Du bør motta minst én API-nøkkel, som er en tilfeldig tegnstreng som er knyttet til prosjektet ditt. Den vil se ut som følger:

Du kan få utdelt to nøkler, en "offentlig nøkkel" og en "privat nøkkel". En offentlig nøkkel har mer begrenset tilgang til API-data og -funksjoner og kan deles med samarbeidspartnere. Den private nøkkelen bør ikke deles med noen. Den fungerer som en mer permanent identifikator for prosjektet ditt og gir tilgang til utviklerkontoen din samt alle dataene dine.

Se API-dokumentasjonen for å finne ut hvor API-nøkkelen skal inkluderes i forespørsler - vanligvis er den i forespørselshodet:

Eller skrevet i en spørringsstreng etter forespørselsmetoden:

Er API-nøkler beskyttet?

Web-API-er er et populært mål for dataangrep fordi de overfører sensitive data mellom applikasjoner over Internett, for eksempel påloggingsinformasjon, personlig informasjon og finansielle transaksjoner. For å bekjempe dette må web-API-er være ekstremt sikre.

API-nøkler kan brukes til å identifisere et prosjekt i forhold til et API og til å spesifisere hvilke ressurser et prosjekt kan få tilgang til. Eksperter mener imidlertid at API-nøkler i seg selv ikke er tilstrekkelig sikre. Dette skyldes flere faktorer:

  • API-nøkler kan ikke autentisere den enkelte brukeren som sender forespørselen, kun prosjektet eller applikasjonen som sender forespørselen.
  • API-nøkler er som passord - de er bare effektive hvis eieren oppbevarer dem på en sikker måte. Hvis en nøkkel havner i feil hender, kan den lett utnyttes.
  • Siden API-nøkler sjelden utløper, kan en hacker bruke nøkkelen på ubestemt tid med mindre eieren av nøkkelen regenererer eller deaktiverer den.

Populære API-er i dag bruker brukerautentisering og autorisasjon av disse grunnene. Brukerautentisering sikrer at personen som sender inn forespørselen (og ikke applikasjonen), er den han eller hun utgir seg for å være. Brukerautorisasjon bekrefter at denne personen er autorisert til å fullføre forespørselen.

Autentiseringstokener, som er sikrere enn API-nøkler, brukes til brukerautentisering og autorisasjon. OAuth-protokollen er dagens standard for brukerautentisering og autorisasjon, og gjør det mulig for brukere å autentisere seg selv uten å oppgi passord. Dette er samme teknologi som single sign-on, som gjør det mulig for brukere å logge inn på én applikasjon (for eksempel LinkedIn) via en annen (for eksempel Google).

OAuth er en mer kompleks prosess som fortjener sin egen artikkel, så her er en forklaring på hvordan OAuth fungerer.

Slik lagrer du API-nøkler på en sikker måte

Til tross for ulempene er API-nøkler fortsatt populære og verdifulle for å identifisere anropsprosjekter. Det er stor sjanse for at du trenger å holde styr på en eller flere når du jobber med et API.

API-nøkler fungerer omtrent som passord og bør lagres og beskyttes. Her er noen grunnleggende trinn du kan ta for å begrense risikoen for at en nøkkel blir stjålet:

  • Ikke skriv ned nøkkelen din på et offentlig sted - for eksempel på en huskelapp eller i en fil på en offentlig datamaskin. Du kan trygt få tilgang til nøkkelen i utviklerkontoen din.
  • Vær forsiktig så du ikke avslører nøkkelen ved et uhell når du dokumenterer prosjektet, for eksempel med skjermbilder, opplasting til et offentlig repositorium eller i en URL.
  • Ikke skriv API-nøkkelen direkte inn i programmet, da alle som har tilgang til kildefilene dine, kan se nøkkelen din.
  • Før du deler API-nøkkelen din, må du generere den på nytt og merke den som den nyeste delte nøkkelen.
  • Ikke del API-nøkler via e-post.
  • Bruk alltid HTTPS/SSL for API-forespørsler - noen API-er vil ikke ta imot forespørselen din hvis du ikke bruker det.
  • Tildel en unik API-nøkkel til hvert prosjekt, og merk dem deretter. Hvis du oppdager en kompromittert nøkkel, kan du regenerere eller deaktivere den uten at det påvirker de andre prosjektene dine.

Eksempler på API-nøkler

Her er noen eksempler på populære API-er og hvordan de implementerer API-nøkler for sikkerhet, for å gjøre denne lærdommen mer forståelig.

Google Maps API-nøkkel

Google Maps-plattformen sikrer kartdataforespørsler med API-nøkler. Når du har opprettet en Google-utviklerkonto, kan du enkelt generere en Google Maps API-nøkkel i området for påloggingsinformasjon.

Google oppfordrer også brukere til å begrense API-nøklene sine til godkjente domener, noe du kan gjøre i delen om legitimasjon. Google Maps API godtar dessuten bare HTTPS-sikrede forespørsler.

Google gir følgende eksempel på en API-nøkkel i en forespørsel.

Ønsker du å inkludere interaktive Google Maps på nettstedet eller i appen din? Ta en titt på vår nybegynnerveiledning til Google Maps API-er.

Hva vi graver:

Googles API og tilhørende nøkler er et utmerket valg for å komme i gang med API-er og API-nøkler på grunn av deres enkelhet.

API-nøkkel for Stripe

Stripe, en tjeneste for betalingsbehandling, tilbyr API-nøkler for hver utviklerkonto for å autentisere forespørsler til API-et. Det genereres to typer API-nøkler: "publiserbar", som er din offentlige nøkkel som kobler kontoen din til Stripe, og "hemmelig", som er din konfidensielle private nøkkel som lar deg sende alle forespørsler til Stripe.

Ideell for testing:

Stripe genererer to sett med publiserbare og hemmelige nøkler, ett for den aktive applikasjonen og ett for API-testing. Dette gir deg totalt fire nøkler. Understrengen _test_ vises i test-API-nøkler.

Stripe tillater også brukere å generere nøkler med strengere restriksjoner hvis API-et er implementert som en mikrotjeneste.

Når bør du bruke en API-nøkkel?

API-nøkler kan være svært nyttige og gi deg mer kontroll over hvordan applikasjonsprogramvaren din brukes, men det kan være vanskelig å vite når du bør bruke dem. Før vi avslutter dette innlegget, kan du ta en titt på listen nedenfor for å se når det kan være lurt å bruke en API-nøkkel i prosjektet ditt.

Anonym trafikk bør blokkeres fordi den kan indikere potensielt ondsinnet aktivitet eller trafikk. API-nøkler kan brukes til å identifisere applikasjonstrafikk og hjelpe til med feilsøking og bruksanalyse.
Kontroller API-anrop: Begrensning av API-anrop bidrar til å begrense forbruk, trafikk og bruk for å sikre at bare legitim trafikk får tilgang til API-et.

Identifiser API-trafikk: Gjenkjenning av bruksmønstre bidrar til å oppdage ondsinnet aktivitet og problemer i API-et.

Filtrer logger: API-serveraktivitet kan logges og filtreres basert på API-nøkkelen.

API-nøkler har betydelige begrensninger som du bør være klar over. Her er en liste over ting du bør huske på.
API-nøkler bør ikke brukes til sikker autorisasjon fordi de er mindre sikre enn autentiseringstokener.

Identifisere prosjektopprettere eller -eiere: API-nøkler kan bare identifisere prosjektet som foretar anropet, ikke hvem som har opprettet eller eier prosjektet.

Identifisering av brukere: API-nøkler brukes til å identifisere prosjekter, ikke brukerne som får tilgang til dem.

API-nøkler kan bidra til å sikre forespørslene dine.

Selv om API-nøkler ikke er det eneste (eller det beste) sikkerhetstiltaket for API-er, er de nyttige for API-leverandører og nødvendige for autentisering av API-integrasjoner.

Én ting vil forbli konstant etter hvert som API-integrasjoner sprer seg over nye applikasjoner og smartenheter: Det vil alltid finnes folk som ønsker å stjele og utnytte personopplysninger. Derfor vil alle anerkjente API-er som overfører sensitiv informasjon, inkludere API-nøkler (og andre sikkerhetstiltak) i sitt arsenal.

Facebook
Twitter
LinkedIn
Pinterest
WhatsApp
nb_NONorwegian