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 "Drift av Så-Och-Så", bevittnar du denna samverkanseffekt i aktion.

And of course the main reason people like this third party sharing and collaboration is that it can save you many hours in development time, because you’re not re-inventing something that already exists.

But even with these great benefits of the third party code sharing system, there are plenty of reasons why you might want to avoid making use of those code fragments, as we’re about to see…

1. Potentiella säkerhetsrisker

Eftersom nästan all kod som driver någonting på webben är öppen källkod, är det en rimlig satsning att om det finns någon skadlig nyttolast i en given applikation kommer den snabbt att upptäckas av utvecklargemenskapen 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 den inte

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.

The other issue is that if you don’t own code, you have no control over it, and you may not necessarily understand everything it does or how it works.

That means if somebody makes some change to the code, you may be stuck with that change, especially if you faithfully install updates, patches, upgrades and new versions as soon as they’re released as stable, or if you rely entirely on content delivery networks for your third party solutions.

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

Third party code usually works to do the job you want, but sometimes it contains all kinds of extra features that you don’t need and will probably never use.

In some cases you can’t remove those extra features easily or even at all. You may also have to compromise. The feature may do something very close to what you intend, but not exactly what you intend. You’re trading awesomeness for the sake of having less work to do, and that’s not always a good trade.

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

Many open source projects use the same third party code fragments in different ways to produce their software. Most of the time that’s not a bad thing, but it can lead to trouble.

These days, many developers don’t even install the fragments they are using, but pull them at run time from content delivery networks on demand. The danger of this was illustrated spectacularly by the Left-Pad Incident of 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.

The major part of it was that most people who were using Left-Pad had no idea they were using it, what it did, or how to fix the problem. As stated at item 2, if you don’t own it, you may not necessarily understand it.

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.