I pericoli della dipendenza da codice di terze parti

Se ti abboni a un servizio da un link in questa pagina, Reeves and Sons Limited potrebbe guadagnare una commissione. Vedi il nostro Dichiarazione etica.

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 Tal dei tali", stai assistendo a questo effetto collaborativo in azione.

E ovviamente il motivo principale per cui alla gente piace questa condivisione e collaborazione di terze parti è che può farti risparmiare molte ore in termini di tempo di sviluppo, perché non stai reinventando qualcosa che già esiste.

Ma nonostante questi grandi vantaggi del sistema di condivisione del codice di terze parti, ci sono molte ragioni per cui potresti voler evitare di utilizzare quei frammenti di codice, come stiamo per vedere...

1. Potenziali rischi per la sicurezza

Poiché quasi tutto il codice che guida qualsiasi cosa sul Web è open source, è lecito scommettere che se è presente un payload dannoso in una determinata applicazione, verrà rapidamente scoperto dalla comunità degli sviluppatori e corretto rapidamente.

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 di solito può fare un buon lavoro nell'offuscare la natura dannosa del codice e solo un altro programmatore altamente qualificato capirà qual è 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.

Naturalmente quasi nessuno si prende la briga di leggere questi noiosi elenchi di termini e condizioni, ma ciò può potenzialmente essere un errore.

In particolare, sarebbe un errore se qualche condizione nel contratto di licenza ti portasse a violare qualche legge nel tuo paese d'origine o nel paese in cui si trova il tuo server.

L'altro problema è che se non possiedi il codice, non hai alcun controllo su di esso e potresti non necessariamente comprendere tutto ciò che fa o come funziona.

Ciò significa che se qualcuno apporta qualche modifica al codice, potresti rimanere bloccato con quella modifica, soprattutto se installi fedelmente aggiornamenti, patch, upgrade e nuove versioni non appena vengono rilasciate come stabili o se ti affidi interamente alla distribuzione dei contenuti reti per le vostre soluzioni di terze parti.

3. Ottieni spesso molto più del necessario

Il codice di terze parti di solito funziona per svolgere il lavoro desiderato, ma a volte contiene tutti i tipi di funzionalità extra che non ti servono e che probabilmente non utilizzerai mai.

In alcuni casi non è possibile rimuovere facilmente o addirittura rimuovere tali funzionalità extra. Potrebbe anche essere necessario scendere a compromessi. La funzione potrebbe fare qualcosa di molto vicino a ciò che intendi, ma non esattamente ciò che intendi. Stai scambiando la bellezza per il bene di avere meno lavoro da fare, e non è sempre un buon scambio.

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 modi diversi per produrre il proprio software. Nella maggior parte dei casi non è una cosa negativa, ma può portare a problemi.

Al giorno d'oggi, 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 del Left-Pad del 2016.

Ogni catena è forte quanto il suo anello più debole. Questo concatenamento di dipendenze significa che se qualsiasi collegamento in qualsiasi punto della catena viene rotto o compromesso, l'intera catena è a rischio di malfunzionamento. In alcune situazioni ciò potrebbe essere piuttosto costoso.

Nessuno avrebbe sospettato il potere contenuto nelle 11 righe di codice contenute in quella piccola funzione benigna chiamata Left-Pad, ma quando quel particolare collegamento a catena fallì, molti grandi siti web si fermarono di colpo.

La maggior parte del problema era che la maggior parte delle persone che utilizzavano Left-Pad non avevano idea di averlo utilizzato, di cosa facesse o di come risolvere il problema. Come affermato al punto 2, se non lo possiedi, potresti non necessariamente capirlo.

Left-Pad era una funzione molto semplice che aggiungeva semplicemente alcuni spazi al lato sinistro di una linea per assicurarsi che la linea avesse la lunghezza corretta. Ora il problema qui è che qualsiasi programmatore competente potrebbe replicare facilmente tale funzionalità.

Non è assolutamente necessario che alcuna applicazione dipenda da questa funzione di terze parti, eppure migliaia di siti Web utilizzavano software che la includevano, inclusi Netflix, Facebook e Reddit. È stato solo un colpo di fortuna che in questo caso sia stata una funzione molto semplice a spezzare la catena, e non una funzione veramente complicata che avesse una propria 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.

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.

Commenti Risposte 0

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

Valutazione *

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati dei tuoi commenti.