Moviento 0deps: Lokale afhankelijkheden en beveiliging

Softwareontwikkelaars installeren in de meeste projecten honderden externe bibliotheken. Moderne frameworks vertrouwen op duizenden transitieve afhankelijkheden. Dit betekent dat uw applicatie code uitvoert die is geschreven door honderden onbekende mensen.

Dit ecosysteem versnelt de ontwikkeling. Het creëert echter ook enorme risico's voor de supply chain.

De 0deps-beweging stelt een eenvoudige vraag: Wat als uw applicatie alleen de code zou uitvoeren die u daadwerkelijk beheert?

Elke afhankelijkheid voegt een nieuw aanvalsoppervlak toe. Een afhankelijkheid kan:

  • Beveiligingslekken introduceren.
  • Een doelwit worden voor supply chain-aanvallen.
  • Verlaten worden door de maker.
  • Zijn publieke API wijzigen.
  • De achterwaartse compatibiliteit verbreken.

In het 0deps-model verplaatst u alle noodzakelijke afhankelijkheden rechtstreeks naar uw projectrepository. U stopt met het dynamisch downloaden van pakketten tijdens de build-tijd. Alles wat nodig is om de app te draaien, blijft in de repository vanaf het moment dat u deze kloneert.

Deze aanpak biedt:

  • Reproduceerbare builds.
  • Minder afhankelijkheid van externe pakketregistraties.
  • Gecentraliseerde beveiligingsaudits.
  • Voorspelbare resultaten.

Het doel is niet om code statisch te maken. Implementaties en algoritmen moeten evolueren om bugs op te lossen en veilig te blijven. Het doel is om het publieke contract stabiel te houden.

Elke bibliotheek legt een specifieke interface bloot. Bijvoorbeeld:

  • authenticate()
  • createSession()
  • verifyPasskey()

Deze functies vormen een contract. Het contract blijft hetzelfde, zelfs als u de onderliggende code herschrijft. U kunt bibliotheken vervangen of protocollen wijzigen zonder de rest van uw applicatie te verstoren.

Wanneer er een kwetsbaarheid optreedt, krijgt u meestal te maken met twee problemen:

  1. De bug oplossen.
  2. Controleren of de update uw app verstoort.

In een 0deps-architectuur verdwijnt het tweede probleem. U werkt de implementatie achter de interface bij. De publieke API blijft identiek. Uw applicatie blijft werken zonder wijzigingen in de code.

Door externe code te isoleren achter interne adapters, vermindert u het risico op de lange termijn. Als een bibliotheek morgen verdwijnt, hoeft u alleen de adapter bij te werken.

0deps is niet tegen open source. Het verandert de manier waarop u het gebruikt. Bibliotheken worden geïntegreerde componenten in plaats van dynamische externe links.

Dit creëert software die voorspelbaar, veerkrachtig en gemakkelijk te onderhouden is. Implementaties evolueren. Het contract blijft bestaan.

Bron: https://dev.to/fullagenticstack/movimiento-0deps-dependencias-locales-contratos-inmutables-y-seguridad-por-diseno-1a6o