Farorna med tredjeparts kodberoende

Om du prenumererar på en tjänst från en länk på den här sidan kan Reeves and Sons Limited tjäna en provision. Se vår etik uttalande.

Det finns några riktigt bra saker med hur programvaran fungerar på Internet. Till att börja med finns det ett enormt inofficiellt nätverk av miljoner människor som bidrar till ett enormt arkiv av kodfragment som hjälper till att driva många fler miljoner applikationer.

Varje gång du ser en liten länk längst ner på en webbsida som säger "Powered by So-And-So", bevittnar du denna samarbetseffekt i aktion.

Och naturligtvis är den främsta anledningen till att människor gillar den här tredjepartsdelningen och samarbetet att det kan spara dig många timmar i utvecklingstid, eftersom du inte återuppfinner något som redan finns.

Men även med dessa stora fördelar med tredje parts koddelningssystem, finns det många anledningar till varför du kanske vill undvika att använda dessa kodfragment, som vi snart kommer att se...

1. Potentiella säkerhetsrisker

Eftersom nästan all kod som driver någonting på webben är öppen källkod är det en rättvis satsning att om det finns någon skadlig nyttolast i en given applikation, kommer den snabbt att upptäckas av utvecklargruppen och snabbt korrigeras.

Men många av dessa kodfragment laddas ner hundratals eller till och med tusentals gånger per dag, och inte alla administrativa team gör ett bra jobb med att upprätthålla ett säkert koddelningssystem.

Ju större och mer komplex en applikation är, desto lättare är det att infektera det genom att lägga till några kodrader på någon obskur plats. Nästan ingen tar sig tid att granska varje kodrad i en applikation eftersom de i allmänhet antar att koden kan lita på.

En mycket skicklig programmerare kan vanligtvis göra ett bra jobb med att fördunkla kodens skadliga karaktär, och bara en annan mycket skicklig programmerare kommer att ta reda på vad syftet är ... om det skadliga kodfragmentet upptäcks.

2. Du äger inte den

Detta är faktiskt en kombination av problem. Den första är att du kan bli föremål för olika licensvillkor. När du har flera kodfragment som används på en enda webbsida eller applikation kan du faktiskt vara föremål för flera olika licensvillkor och vissa av dessa kan faktiskt vara i konflikt med varandra.

Naturligtvis är det knappast någon som bryr sig om att läsa dessa tråkiga listor med villkor, men det kan potentiellt vara ett misstag.

I synnerhet skulle det vara ett misstag om något villkor i licensavtalet gjorde att du bryter mot någon lag i ditt hemland eller i det land där din server finns.

Den andra frågan är att om du inte äger kod har du ingen kontroll över den, och du kanske inte nödvändigtvis förstår allt den gör eller hur den fungerar.

Det betyder att om någon gör någon förändring i koden kan du ha fastnat med den förändringen, särskilt om du troget installerar uppdateringar, patchar, uppgraderingar och nya versioner så snart de släpps som stabila, eller om du helt och hållet litar på innehållsleverans nätverk för dina tredjepartslösningar.

3. Du får ofta mycket mer än du behöver

Tredjepartskod brukar fungera för att göra jobbet du vill, men ibland innehåller den alla möjliga extrafunktioner som du inte behöver och förmodligen aldrig kommer att använda.

I vissa fall kan du inte ta bort de extra funktionerna enkelt eller ens alls. Du kan också behöva kompromissa. Funktionen kan göra något mycket nära det du har för avsikt, men inte exakt vad du har för avsikt. Du handlar fantastiskt för att ha mindre arbete att göra, och det är inte alltid en bra affär.

4. Flera nivåer av tredjepartsberoende kan leda till verkliga problem

Många projekt med öppen källkod använder samma kodfragment från tredje part på olika sätt för att producera sin programvara. För det mesta är det inte dåligt, men det kan leda till problem.

Nuförtiden installerar många utvecklare inte ens fragmenten de använder, utan hämtar dem under körning från innehållsleveransnätverk på begäran. Faran med detta illustrerades spektakulärt av Left-Pad Incidenten 2016.

Varje kedja är bara så stark som dess svagaste länk. Denna kedja av beroenden innebär att om någon länk någonstans längs kedjan bryts eller äventyras, riskerar hela kedjan att fungera fel. I vissa situationer kan det bli ganska dyrt.

Ingen skulle ha misstänkt kraften i de 11 raderna kod som finns i den där godartade lilla funktionen som kallas Left-Pad, men när just den kedjelänken misslyckades fick det många stora webbplatser att stanna.

Huvuddelen av det var att de flesta som använde Left-Pad inte hade någon aning om att de använde den, vad den gjorde eller hur man åtgärdar problemet. Som anges i punkt 2, om du inte äger den, kanske du inte nödvändigtvis förstår den.

Left-Pad var en mycket enkel funktion som bara lägger till några mellanslag till vänster sida av en linje för att se till att linjen har rätt längd. Nu är problemet här att alla kompetenta programmerare lätt kan replikera den funktionen.

Det finns absolut inget behov av att någon applikation är beroende av denna tredjepartsfunktion, och ändå använde tusentals webbplatser programvara som inkluderade den, inklusive Netflix, Facebook och Reddit. Det var bara en lyckoträff att det i det här fallet var en väldigt enkel funktion som bröt kedjan, och inte någon riktigt komplicerad funktion som hade sin egen kedja av beroenden.

I första hand är det om du kan bygga det själv, borde du förmodligen!

I slutändan beslutet om att använda tredjeparts kodblock i ditt projekt beror på en serie komplicerade beslut som aldrig bör tas lätt. De faktorer du måste tänka på är säkerhet, laglighet, kostnad, tid och stabilitet.

För att göra beslutsprocessen enklare, kommer följande testvillkor förmodligen att hjälpa.

OM någon av dessa faktorer är sanna:

  • funktionen du vill ha är enkel
  • du (eller ditt team) har förmågan att skapa funktionen
  • det finns gott om tid att skapa funktionen
  • din ansökan behöver bra säkerhet
  • du har oro för potentiella juridiska problem i samband med licensiering från tredje part
  • Det är viktigt att din ansökan aldrig misslyckas

DÅ borde du bygga det själv,

ELSE kan det vara mer effektivt att använda tredjepartsfunktioner, förutsatt att du är medveten om de potentiella problemen och att du har en strategi för vad du kommer att göra om dessa problem uppstår.

Bogdan Rancea

Bogdan är en av grundarna i Inspired Mag och har samlat nästan 6 års erfarenhet under denna period. På fritiden gillar han att studera klassisk musik och utforska bildkonst. Han är ganska besatt av fixies också. Han äger redan 5.

Kommentarer 0 Responses

Kommentera uppropet

E-postadressen publiceras inte. Obligatoriska fält är markerade *

Betyg *

Den här sidan använder Akismet för att minska spam. Läs om hur din kommentardata behandlas.