Protejare coduri sursa

Salut,
Lucrez la un proiect in NestJs si din motive obiective vreau si trebuie sa protejez codul.
In cap imi vin doua solutii:

  • Sa fac un binary cu pkg de la node, dar nu stiu daca merge pe Nestjs
  • sa livrez o imagine docker
    Aveti experienta cu asa ceva? Ca sfaturi aveti pentru mine?
1 Like

Poti face scrambling la js-ul după build, poti pune js-ul intr-un snapshot de v8 criptat (electron). Poți compila JS în binar. Snapshot-ul e ridicol de greu de modificat la rulare dinafara codului.

Docker nu te protejeaza cu nimic.

1 Like

Ce situatii vrei sa eviti?

Protejat de cine? De colegi? De client? De firma concurenta? De NSA?

1 Like

Vreau sa evit situatia in care clientul nu mai plateste.

De ce nu il dai ca SaaS?
Si codul ramane la tine.

1 Like

Daca lucrezi la negru, este o problema mai mare decat ce incerci tu sa rezolvi. Altfel, nu vad de ce ai proteja codul sursa.

Ceri banii inainte, sau macar esalonat pe transe.

Solutia pe care am implementat-o eu e sa am un fel de kill switch, de exemplu folosirea instantei mele de Firebase la testare, cu cod “optimizat” (adica obfuscat), si sa inchid instanta Firebase daca nu ma platesc.

Daca stiam cu cine am de-a face ceream banii inainte ca la coltul strazii.

Zisa intre agentie si client, de catre agentie. Clientul avea dreptate, agentia ii daduse preturile in lei dar era convinsa ca sunt euro.

Incerci sa rezolvi o problema de incredere facand o nefacuta. Daca suma pe care v-ati inteles e platita vei da acces full la cod?

Poti sa gazduiesti tu codul pana e gata de pus in productie.

Si mai bine ar fi sa esalonati plata. Esti si tu mai investit, e si clientul deja angajat in colaborare, prindeti incredere unul in altul cu fiecare milestone / plata facuta.

Depinde de solutie, daca e airtight sau nu. (cu access interzis la internet sau nu)
Daca e ceva software industrial nu o sa ai acces la internet si nu poti folosi kill switch, dar nu cred ca e cazul lui Bogdan. In acest caz se face fingerprinting pe hardware si se genereaza o licenta care expira sau un license server pe un stick care e de fapt un server.

In principal clientul trebuie sa fie un partener, in mod ideal trebuie sa poti trata codul tau ca open-source si te plateste pentru munca ta, nu pentru codul in sine. Asa se lucreaza cu clientii mari/foarte mari, daca e ceva client mic care se uita la fiecare dolar atunci pui kill switch si obfuscare/scrambling ca sa ii fie cat mai greu sa iti foloseasca solutia fara sa te plateasca.

Problema care apare la kill switch e contractul, ce se intampla daca serviciile tale pentru kill switch sunt down din alte motive, esti hack-uit, etc ? Ce se intampla daca iti cade kill switch-ul la black friday si omul facea vanzari de zeci de mii de euro daca ii mergea aplicatia si te-a platit la timp mereu ?

Poti sa devii bun de plata/pierzi clientul din cauza excesului de zel.

2 Likes

Acum multi ani m-a stresat si pe mine problema, dar nu pentru outsourcing ci pentru o aplicatie. Pana la urma nu merita efortul de a proteja diabolic o aplicatie pentru ca cineva tot o poate copia. Protectia e pentru buni-platnici, ceilalti oricum nu vor plati.

Nu puteti negocia partea asta? Adica pe fiverr stiu ca era chestia asta, un extra serviciu era trimiterea codului sursa catre client, odata cu aplicatia (bineinteles, daca platea pentru el). Altfel, nu-i dai acces la repo si-i prezinti doar demo-uri cand vrea sa vada in ce stadiu e aplicatia (daca nu lucrezi pe mediul lui).