Jump to content
Che

Client Side dar protected?

Recommended Posts

Sa zicem ca vrei sa iti faci un site unicat cum nu mai exista pe internet la ora actuala dar, ca sa nu folosesti functii php sau Python de exemplu (in caz ca folosesti Django) fiindca nu vrei sa rupi serverul si sa fie mai tot timpul picat din cauza a foarte putini utilizatori, te gandesti la ceva gen Javascript care practic este Clent Side si fiecare viziator/utilizator isi foloseste propriul browser pentru a utiliza diverse functii oferite de site.

Problema cu Javascript este ca oricare daca se pricepe (si nu-i neaparat greu) iti poate lua functiile din javascript si sa le foloseasca dupa cum doreste in propriile lui aplicatii sau chiar sa le converteasca in C++ ca limbajele sunt oarecum asemanatoare si sa faca aplicatii pe baza codului tau sursa asta dupa tu ce ti-ai stors creierii si nervii sau poate ai dat bani unui programator sa-ti faca ceva frumos asa cum vrei tu.

Exista un soi de obfuscare in Javascript dar am inteles ca se poate decoda la loc si rezulta codul original.

 

Ce altceva s-a putea folosi care sa fie client side dar codul sa fie protejat si sa nu poata fi furat de utilizatorii sitului (sau citit si creat exploituri dupa el) ?

 

Multumesc mult de tot!

  • Haha 5
Link to comment
Share on other sites

Man, problema e simpla.

Inainte exista client side si server side. Clientul (browserul) era dumb, cerea pagina, serverul facea operatiile necesare (interogare, db, pregatire pagina si returna un html).

Cu timpul, calculatoarele au evoluat, atat serverele, cat si pc-urile. Au aparut doua lucruri noi: serverele erau din ce in ce mai asaltate de din ce in ce mai multi clienti si pc-urile erau din ce in ce mai bune. Astfel au aparut frameworkurile de frontend si backend-ului i s-au mai luat din sarcini. Angular, vue sau react se ocupa inclusiv de routing. Iar backendul e lightweight, adica face doar webapi (mare pare responseuri, requesturi http). O alta problema introdusa de http2 este faptul ca daca ai login nu mai esti stateless, ai sesiune. Cu tokenul de oauth rezolvi si problema de sesiune si nu mai trebuie sa mentii corespondenta user sesiune. Deci backend si mai light.

 

Deci pt a avea un backend cat mai fit cauta microservices si web api (aici scapi de obfuscarea codului- ce e pe statiile tale e sfant, pastrezi algoritmii secreti la tine) si pt frontend gras cauta frameworkurile de frontend.

 

Spor la treaba la citit de arhitecturi software!

 

Bonus: cauta pe zlib cartile de arhitectura de la manning.

 

Bonus 2:

1Architecture-2021-1618415938711.jpg

  • Thanks 1
Link to comment
Share on other sites

Daca vrei neaparat pe client-side poti face asa:

 

1. scrii codul secret in C++

2. obfuschezi codul

3. apoi il compilezi ca modul de WebAssembly

3. te asiguri ca toate functiile exportate sa aiba nume si parametri obfuscati, inclusiv valorile

4. codul JavaScript din care apelezi functiile exportate sa fie obfuscat la randul lui

5. ???

6. PROFIT!

 

Atentie, toate astea vin si cu o parte nasoala: Equation Group s-ar putea sa iti faca oricum reverse engineering si sa fure toata munca. 

  • Thanks 1
Link to comment
Share on other sites

24 minutes ago, Wav3 said:

Un site fara backend nu cred ca merita furat. Adica ce poti face doar din frontend? Poate doar sa apelezi diverse API-uri care nu sunt ale tale (deci nu e backendul tau).

vezi bro ca ti-a expirat certificatu' la ala din semnatura :)

Abgelaufen: Donnerstag, 20. Mai 2021 um 18:13:18 Mitteleuropäische Sommerzeit

 

  • Haha 1
  • Sad 1
Link to comment
Share on other sites

On 9/20/2021 at 11:37 PM, aelius said:

Ce server picat bro, ca poti face hosting si pe telefon in ziua de azi. Am 12 GB memorie pe tel.

Foloseste ce trebuie si servesti 10000 users online cu orice server decent. Nu reinventa roata.

 

Ne-ai uimit cu intrebarile si biznisurile astea man :)))))

Poate nu m-am exprimat eu bine, nu ma refer sa fie picat de la numarul de vizitatori simultan ci de la suprasolicitarea aplicatiei web.

Mai exact, sa zicem ca as vrea sa fac un fel de site gen tradingview dar care sa aiba niste indicatori custom made care se bazeaza pe o gramada de calcule dar si pe alti indicatori (fiecare din ei facand alte calcule) deja existenti, plus sa poata fiecare vizitator sa-i dea ce parametri vrea el, deci cate un run pentru fiecare schimbare de parametri pentru fiecare utilizator in parte. De asta consider ca mai bine ar fi ceva bazat JavaScript ca fiecare sa-si foloseasca propriul browser pentru a face asta si nu procesorul serverului pe care este hostat situl. Am dat doar un exemplu si la asta m-am referit de fapt.

 

@SirGod Codul fiind in C++, care procesor il va rula: al serverului sau al PC-ului celui care viziteaza situl? Suna interesant. Nu am mai auzit pana acum de asa ceva. Multumesc!

 

@gigiRoman M-am uitat la un video pe Yotube legat de ceea ce ai zis si din comparatia pe care o facea eu am inteles ca Vue este cel mai bun JS framework, mai bun si decat React si decat Angular. Ai putea te rog sa-mi dai un exemplu extrem de simplu si de banal si usor de inteles care sa faca asta, te rog? Sa zicem ca ai o functie care da ca si return 12 de fiecare data cand o apelezi, gen calculeaza return 5+2+1+3+1; si tu nu vrei ca utilizatorul sa afle cum ai calculat tu de ai ajuns la numarul 12. E cam stupid exemplul si exploatabil, stiu, dar de dragul teoriei. Cum ar arata codul exact in oricare framework vrei tu si iti vine mai usor, ca astfel incat utlizatorul sa nu poata vedea js cu functia care returneaza 12? Cat mai simplu posibil. Toate astea trebuie scrise in index.html sau fiecare trebuie puse in fisiere separate? Multumesc mult de tot!

Link to comment
Share on other sites

9 minutes ago, Che said:

Sa zicem ca ai o functie care da ca si return 12 de fiecare data cand o apelezi, gen calculeaza return 5+2+1+3+1; si tu nu vrei ca utilizatorul sa afle cum ai calculat tu de ai ajuns la numarul 12.

Sinplu. Faci un web api endpoint in care calculezi si userul nu va stii ce faci tu pe serverul tau.

Link to comment
Share on other sites

26 minutes ago, Che said:

Codul fiind in C++, care procesor il va rula: al serverului sau al PC-ului celui care viziteaza situl? Suna interesant. Nu am mai auzit pana acum de asa ceva. Multumesc!

Webassembly (c++ si nu numai) e noul feature al browserelor de a rula cod compilat, deci nu ruleaza pe server, ci pe client. Da o cautare pe google.

  • Upvote 1
Link to comment
Share on other sites

Che, gandeste-te la asta:

Tu cum profiti din site-ul tau?

Daca ceri bani pentru un abonament/utilizare/etc. atunci iti permiti din profit sa inchiriezi niste servere. (flexible cloud, platesti cat consumi)

 

Daca vrei sa dai site-ul la liber, sa-l foloseasca toata lumea gratis. Atunci fa-l open source ca sa fie 100% liber si gratuit.

 

Sau tu vrei si gratis si cu plata? si secret si open source?

  • Upvote 1
Link to comment
Share on other sites

11 hours ago, yoyois said:

Atunci fa-l open source ca sa fie 100% liber si gratuit.

Gratuit da, dar nu open source fiindca nu mi-ar conveni sa vina altii si sa ia pur si simplu codul ca sa-l puna in propriile aplicatii sau sa faca diversi experts advisors sau pur si simplu un site asemanator dar cu plata si ca castige bani doar fiindca e mai bine promovat.

Mai pe scurt, problema este ca daca il faci opensource nu mai vin vizitatori fiindca fiecare isi trage codul sursa si il pune la el pe PC sau face altceva cu el si nu mai are nevoie de tine sa-ti faca vizite iar banii as vrea sa vina din reclamele puse pe site si prin urmare daca nu-s vizitatori, nu mai sunt nici bani din reclame.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...