I pericoli della dipendenza da codice di terze parti

Ci sono alcune cose davvero buone sul modo in cui il software funziona su Internet. Per cominciare, c'è un'enorme rete non ufficiale di milioni di persone che contribuiscono a un enorme deposito di frammenti di codice che aiutano a potenziare molti milioni di applicazioni.

Ogni volta che vedi un piccolo link in fondo a una pagina web che dice "Powered by So-And-So", stai assistendo a questo effetto collaborativo in azione.

E naturalmente la ragione principale per cui la gente condivide questa condivisione e la collaborazione è che può farti risparmiare molte ore di sviluppo, perché non stai reinventando qualcosa che esiste già. Ma anche con questi grandi vantaggi del sistema di condivisione di codice di terze parti, ci sono molte ragioni per cui potresti voler evitare di usare quei frammenti di codice, visto che stiamo per vedere ...

1.Potenziali rischi per la sicurezza

Poiché quasi tutto il codice che guida qualsiasi cosa sul Web è open source, è una buona scommessa che se c'è un carico utile malevolo in una determinata applicazione, verrà rapidamente scoperto dalla comunità degli sviluppatori e rapidamente corretto.

Ma molti di questi frammenti di codice vengono scaricati centinaia o anche migliaia di volte al giorno, e non tutti i team amministrativi stanno facendo un buon lavoro per mantenere un sistema di condivisione del codice sicuro.

Più l'applicazione è grande e complessa, più è facile infettarla aggiungendo poche righe di codice in qualche luogo oscuro. Quasi nessuno impiega il tempo necessario per esaminare ogni riga di codice in un'applicazione, poiché generalmente presuppongono che il codice possa essere considerato attendibile.

Un programmatore altamente qualificato può solitamente fare un buon lavoro per offuscare la natura malevola del codice, e solo un altro programmatore altamente qualificato capirà quale sia il suo scopo ... se viene rilevato il frammento di codice dannoso.

2. Non lo possiedi

Questa è in realtà una combinazione di problemi. Il primo è che potresti essere soggetto a vari termini di licenza. Quando si utilizzano più frammenti di codice in una singola pagina Web o applicazione, si potrebbe essere effettivamente soggetti a più termini e condizioni di licenza diversi e alcuni potrebbero essere in conflitto tra loro.

Ovviamente quasi nessuno si preoccupa di leggere questi noiosi elenchi di termini e condizioni, ma questo può potenzialmente essere un errore. In particolare sarebbe un errore se alcune condizioni del contratto di licenza ti hanno causato una violazione di alcune leggi nel tuo paese d'origine o nel paese in cui si trova il tuo server.

L'altro problema è che se non si possiede il codice, non si ha il controllo su di esso, e non si può necessariamente capire tutto ciò che fa o come funziona. Ciò significa che se qualcuno apporta alcune modifiche al codice, potresti rimanere bloccato con tale modifica, specialmente se installi con fiducia aggiornamenti, patch, aggiornamenti e nuove versioni non appena vengono rilasciati come stabili o se fai affidamento esclusivamente sulla consegna dei contenuti. reti per le tue soluzioni di terze parti.

3. Ottieni spesso molto più del necessario

Il codice di terze parti di solito funziona per fare il lavoro che vuoi, ma a volte contiene tutti i tipi di funzionalità extra che non ti servono e che probabilmente non useranno mai. In alcuni casi non è possibile rimuovere quelle funzionalità extra facilmente o addirittura affatto. Potrebbe anche essere necessario scendere a compromessi. La funzione può fare qualcosa di molto vicino a quello che intendi, ma non esattamente quello che intendi. Fai trading awesomeness per avere meno lavoro da fare, e non è sempre un buon affare.

4. Più livelli di dipendenza di terze parti possono portare a problemi reali

Molti progetti open source utilizzano gli stessi frammenti di codice di terze parti in diversi modi per produrre il loro software. Il più delle volte non è una brutta cosa, ma può portare a guai. Oggigiorno, molti sviluppatori non installano nemmeno i frammenti che stanno utilizzando, ma li estraggono in fase di esecuzione dalle reti di distribuzione dei contenuti su richiesta. Il pericolo di ciò è stato illustrato in modo spettacolare dall'incidente sinistro di 2016.

Ogni catena è forte quanto il suo anello più debole. Questa catena di dipendenze significa che se qualsiasi collegamento lungo la catena è rotto o compromesso, l'intera catena è a rischio di malfunzionamento. In alcune situazioni potrebbe essere piuttosto costoso. Nessuno avrebbe sospettato il potere contenuto nelle linee di codice 11 contenute in quella benigna piccola funzione chiamata Left-Pad, ma quando quel particolare collegamento a catena fallì, causò l'arresto di molti grandi siti web. La maggior parte di ciò era che la maggior parte delle persone che utilizzavano Left-Pad non avevano idea di usarlo, cosa facesse o come risolvere il problema. Come indicato nell'articolo 2, se non lo possiedi, potresti non necessariamente capirlo.

Il Left Pad era una funzione molto semplice che aggiunge solo pochi spazi alla parte sinistra di una linea per assicurarsi che la linea sia della lunghezza corretta. Ora il problema è che qualsiasi programmatore competente potrebbe facilmente replicare tale funzionalità. Non è assolutamente necessario che nessuna applicazione dipenda da questa funzione di terzi, eppure migliaia di siti Web utilizzano software incluso, tra cui Netflix, Facebook e Reddit. È stato solo un colpo di fortuna che in questo caso è stata una funzione molto semplice a rompere la catena, e non una funzione davvero complicata che aveva una sua catena di dipendenze.

La linea di fondo è se puoi costruirlo da solo, probabilmente dovresti!

In definitiva, la decisione sull'opportunità di utilizzare blocchi di codice di terze parti nel progetto si riduce a una serie di decisioni complicate che non dovrebbero mai essere prese alla leggera. I fattori che devi considerare sono sicurezza, legalità, costi, tempo e stabilità.

Per semplificare il processo decisionale, probabilmente servirà la seguente condizione di test.

SE uno di questi fattori è vero:

  • la funzione che desideri è semplice
  • tu (o la tua squadra) hai la possibilità di creare la funzione
  • c'è un sacco di tempo per creare la funzione
  • la tua applicazione ha bisogno di una buona sicurezza
  • avete dubbi su potenziali problemi legali associati alla concessione di licenze di terze parti
  • è importante che la tua applicazione non fallisca mai

ALLORA dovresti costruirlo da solo,

ELSE potrebbe essere più efficiente utilizzare le funzioni di terze parti, a condizione che tu sia a conoscenza dei potenziali problemi e che tu disponga di una strategia in atto per ciò che farai in caso di problemi.

immagine di cortesia per gentile concessione di Stephanie Tucker

Bogdan Rancea

Bogdan è membro fondatore di Inspired Mag, avendo accumulato quasi 6 anni di esperienza in questo periodo. Nel tempo libero ama studiare musica classica ed esplorare le arti visive. È piuttosto ossessionato dai fissaggi. Possiede già 5.