Farene ved tredjeparts kodeavhengighet

Hvis du abonnerer på en tjeneste fra en lenke på denne siden, kan Reeves and Sons Limited tjene en provisjon. Se vår etisk uttalelse.

Det er noen få gode ting med måten programvare fungerer på Internett. Til å begynne med er det et enormt uoffisielt nettverk av millioner av mennesker som bidrar til et enormt arkiv med kodefragmenter som hjelper til med å drive mange flere millioner applikasjoner.

Hver gang du ser en liten lenke nederst på en webside som sier “Powered by So-And-So”, er du vitne til denne samarbeidseffekten i aksjon.

Og selvfølgelig er hovedgrunnen til at folk liker denne tredjepartsdelingen og samarbeidet at det kan spare deg for mange timer i utviklingstid, fordi du ikke gjenoppfinner noe som allerede eksisterer.

Men selv med disse store fordelene med tredjeparts kodedelingssystem, er det mange grunner til at du kanskje vil unngå å bruke disse kodefragmentene, som vi er i ferd med å se...

1. Potensielle sikkerhetsrisikoer

Fordi nesten all kode som driver noe på nettet er åpen kildekode, er det en god innsats at hvis det er skadelig nyttelast i en gitt applikasjon, vil den raskt bli oppdaget av utviklermiljøet og raskt korrigert.

Men mange av disse kodefragmentene lastes ned hundrevis eller til og med tusenvis av ganger per dag, og ikke alle administrative team gjør en god jobb med å opprettholde et sikkert kodedelingssystem.

Jo større og mer komplisert en applikasjon er, jo lettere er det å smitte den ved å legge til noen få linjer med kode på et eller annet dunkelt sted. Nesten ingen tar seg tid til å granske hver kodelinje i et program, fordi de vanligvis antar at koden kan stole på.

En dyktig programmerer kan vanligvis gjøre en god jobb med å tilsløre kodens ondsinnede natur, og bare en annen dyktig programmerer vil finne ut hva formålet er ... hvis det ondsinnede kodefragmentet oppdages.

2. Du eier det ikke

Dette er faktisk en kombinasjon av problemer. Den første er at du kan være underlagt forskjellige lisensvilkår. Når du har flere kodefragmenter som brukes på en enkelt webside eller applikasjon, kan du faktisk være underlagt flere forskjellige lisensvilkår og vilkår, og noen av disse kan faktisk være i konflikt med hverandre.

Selvfølgelig er det knapt noen som gidder å lese disse kjedelige listene med vilkår og betingelser, men det kan potensielt være en feil.

Spesielt ville det være en feil hvis en betingelse i lisensavtalen førte til at du bryter noen lover i ditt hjemland eller i landet der serveren din er plassert.

Det andre problemet er at hvis du ikke eier kode, har du ingen kontroll over den, og du forstår kanskje ikke nødvendigvis alt den gjør eller hvordan den fungerer.

Det betyr at hvis noen gjør endringer i koden, kan du bli sittende fast med den endringen, spesielt hvis du trofast installerer oppdateringer, patcher, oppgraderinger og nye versjoner så snart de er utgitt som stabile, eller hvis du stoler helt på innholdslevering nettverk for dine tredjepartsløsninger.

3. Du får ofte mye mer enn du trenger

Tredjepartskode fungerer vanligvis for å gjøre jobben du ønsker, men noen ganger inneholder den alle slags ekstrafunksjoner som du ikke trenger og sannsynligvis aldri vil bruke.

I noen tilfeller kan du ikke fjerne disse ekstra funksjonene enkelt eller i det hele tatt. Du må kanskje også inngå kompromisser. Funksjonen kan gjøre noe veldig nær det du har tenkt, men ikke akkurat det du har tenkt. Du handler fantastisk for å ha mindre arbeid å gjøre, og det er ikke alltid en god handel.

4. Flere nivåer av tredjepartsavhengighet kan føre til reelle problemer

Mange åpen kildekode-prosjekter bruker de samme tredjepartskodefragmentene på forskjellige måter for å produsere programvaren. Mesteparten av tiden er det ikke en dårlig ting, men det kan føre til problemer.

I disse dager installerer mange utviklere ikke engang fragmentene de bruker, men henter dem under kjøretid fra innholdsleveringsnettverk på forespørsel. Faren for dette ble illustrert spektakulært av Left-Pad-hendelsen i 2016.

Hver kjede er bare så sterk som dens svakeste ledd. Denne kjeden av avhengigheter betyr at hvis en kobling hvor som helst langs kjeden brytes eller kompromitteres, er hele kjeden i fare for funksjonsfeil. I noen situasjoner kan det være ganske kostbart.

Ingen ville ha mistenkt kraften i de 11 kodelinjene i den godartede lille funksjonen som heter Left-Pad, men da den spesielle kjedekoblingen sviktet, fikk det mange store nettsteder til å stanse.

Hoveddelen av det var at de fleste som brukte Left-Pad ikke hadde noen anelse om at de brukte den, hva den gjorde eller hvordan de skulle fikse problemet. Som nevnt i punkt 2, hvis du ikke eier det, kan det hende du ikke nødvendigvis forstår det.

Left-Pad var en veldig enkel funksjon som bare legger til noen få mellomrom på venstre side av en linje for å sikre at linjen har riktig lengde. Nå er problemet her at enhver kompetent programmerer enkelt kan replikere denne funksjonaliteten.

Det er absolutt ikke nødvendig for noen applikasjon å være avhengig av denne tredjepartsfunksjonen, og likevel brukte tusenvis av nettsteder programvare som inkluderte den, inkludert Netflix, Facebook og Reddit. Det var bare et lykketreff at det i dette tilfellet var en veldig enkel funksjon som brøt kjeden, og ikke en virkelig komplisert funksjon som hadde sin egen kjede av avhengigheter.

Hovedpoenget er at hvis du kan bygge det selv, burde du sannsynligvis!

Til slutt bestemmer beslutningen om å bruke tredjeparts kodeblokker i prosjektet ditt, en serie kompliserte beslutninger som aldri bør tas lett. Faktorene du må vurdere er sikkerhet, lovlighet, kostnader, tid og stabilitet.

For å gjøre beslutningsprosessen enklere, vil sannsynligvis følgende testforhold hjelpe.

HVIS noen av disse faktorene er sanne:

  • funksjonen du ønsker er enkel
  • du (eller teamet ditt) har muligheten til å opprette funksjonen
  • det er god tid til å lage funksjonen
  • søknaden din trenger god sikkerhet
  • har du bekymringer for potensielle juridiske problemer forbundet med tredjepartslisenser
  • det er viktig at søknaden din aldri skal mislykkes

DÅ skulle du bygge det selv,

ELSE kan det være mer effektivt å bruke tredjepartsfunksjonene, forutsatt at du er klar over de potensielle problemene og at du har en strategi på plass for hva du vil gjøre hvis disse problemene oppstår.

Bogdan Rancea

Bogdan er et grunnleggende medlem av Inspired Mag, etter å ha opparbeidet seg nesten 6 års erfaring i løpet av denne perioden. På fritiden liker han å studere klassisk musikk og utforske billedkunst. Han er ganske besatt av fixies også. Han eier 5 allerede.

Kommentar 0 Responses

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket *

Vurdering *

Dette nettstedet bruker Akismet for å redusere spam. Lær hvordan kommentaren din behandles.