Nodejs script. Stukje code verbergen?

Alles over programmeren en development binnen de IT-wereld
Plaats reactie
Argon
Elite Poster
Elite Poster
Berichten: 1264
Lid geworden op: 21 mei 2007, 22:26
Uitgedeelde bedankjes: 20 keer
Bedankt: 49 keer

Hallo,

Ik heb een nodejs script die anderen ook kunnen/mogen gebruiken. Is er echter een manier om 1 stukje code in het script te decrypten (lees: onleesbaar maken op één of andere manier)? Of is wat ik vraag onmogelijk?

Bedankt !
liber!
Elite Poster
Elite Poster
Berichten: 920
Lid geworden op: 09 apr 2006, 17:48
Twitter: nathan_gs
Uitgedeelde bedankjes: 230 keer
Bedankt: 80 keer
Recent bedankt: 1 keer

Je maakt het hoogstens moeilijker, maar niet onmogelijk.
blaatpraat
Elite Poster
Elite Poster
Berichten: 1300
Lid geworden op: 10 jan 2014, 12:09
Uitgedeelde bedankjes: 32 keer
Bedankt: 103 keer

Aangezien anderen het moeten kunnen uitvoeren, en javascript geen compileer-taal is, zal het inderdaad niet zomaar gaan (je kan het men enkel moeilijker maken, maar uiteindelijk lukt het men toch).

Een mogelijke approach is je library aanpassen naar een REST/SOAP API script.
Je host zelf je library, en stelt een kleine variant ter beschikking.
Men moet een API key aanvragen bij jou, en daarna kan die kleine variant het gedeelte code dat je niet wilt laten zien opvragen per API, en jij levert enkel hetgeen af dat moet gebeuren (en niet de volledige code).
Vergelijking: als je library bijvoorbeeld er eentje zou zijn voor een rekenmachine, dan geef je niet de code van de rekenmachine, maar zorg je bijvoorbeeld dat je API op 2 en 3, de integer 5 retourneert (jij weet dan dat het een optelfunctie is, en weet hoe de code intern zit, de code wordt niet vrijgegeven in dat geval).

Men kan dan aan de hand van verschillende inputs je code proberen te reverse engineeren, en dat zal men ook lukken op termijn wellicht, maar op deze manier is men toch een tijdje zoet (in tegenstelling tot pakweg een base64 encryptie te gebruiken, dan duurt het 2 seconden voor je code zien).
efari
Member
Member
Berichten: 82
Lid geworden op: 10 sep 2015, 21:49
Uitgedeelde bedankjes: 3 keer
Bedankt: 6 keer

wat bedoel je met:
"script die anderen ook kunnen/mogen gebruiken"?
staat het script bvb op een gedeelde folder en kunnen anderen het ter plekke aanpassen? of mogen ze het kopieren en ook zelf gebruiken?

hoedanook, simpele weg:
steek uw "privé code" in een aparte file, maak er een functie van, en roep die functie aan in het gedeelde script. zorg dat je uw 2de file niet deelt met de anderen.

Code: Selecteer alles

// secret.js
// ========
var secretCode = 2;
module.exports = {
  foo: function () {
    return 'bar';
  },
  bar: function (input) {
  	return input*secretCode;
  }
};

var zemba = function () {
}



// app.js
// ======
var secret = require('./secret');
console.log(typeof secret.foo); // => 'function'
console.log(secret.foo()); // => 'bar'
console.log(typeof secret.bar); // => 'function'
console.log(secret.bar(3)); // => 6
console.log(typeof secret.zemba); // => undefined
moeilijke weg, zie blaatpraat
Laatst gewijzigd door efari 06 jul 2018, 17:18, in totaal 1 gewijzigd.
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16726
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 573 keer
Bedankt: 770 keer

efari
Member
Member
Berichten: 82
Lid geworden op: 10 sep 2015, 21:49
Uitgedeelde bedankjes: 3 keer
Bedankt: 6 keer

daarmee kunnen mensen nog steeds de code gebruiken, en als er plaintext wachtwoorden instaan, ook gewoon lezen...
daarnaast bestaan er gewoon tools die code alsnog kunnen de-obfuscaten
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16726
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 573 keer
Bedankt: 770 keer

Snap ik, maar het is wel een antwoord op wat OP vroeg: onleesbaar maken. :-)
Dat je bijvoorbeeld een wachtwoord of API-key daar enkel visueel verbergt en met de juiste debugging/reverse engineering er terug uit kunt halen is een trade-off die je moet maken.
Argon
Elite Poster
Elite Poster
Berichten: 1264
Lid geworden op: 21 mei 2007, 22:26
Uitgedeelde bedankjes: 20 keer
Bedankt: 49 keer

Waar het hem in principe over gaat is dat ik API keys zou verkrijgen van anderen die ik in mijn script verwerk. Ik snap dus dat bepaalde mensen niet het vertrouwen hebben om HUN API keys te geven aan een onbekende...

Vandaar de vraag of de mensen op één of andere manier hun API keys zouden kunnen encrypten zodat ik deze dan gewoon kan copy/pasten in het nodejs script zonder dat ik de effectieve inhoud van de API keys zie.
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 434 keer
Bedankt: 1972 keer

Nee... de enige oplossingen zijn;

- jou code verhuizen naar een server welke men kan aanspreken met jou API key (en die dus achterliggend de andere services aanroept)
- of voor al je gebruiker ook specifieke API keys te laten aanmaken bij jou bron (als die dat al wil doen - weet die trouwens dat jij z'n services aan het "resellen" bent ?)
Argon
Elite Poster
Elite Poster
Berichten: 1264
Lid geworden op: 21 mei 2007, 22:26
Uitgedeelde bedankjes: 20 keer
Bedankt: 49 keer

Er is niets illegaal in het spel hier, dus het gaat hem puur over vertrouwen.

Op Binance kan iedereen een API key creëren zodat er met Bots getrade kan worden

Ik heb samen met nog een ander persoon enkel bots geschreven die reeds uitvoerig getest geweest zijn en goed werken. Deze bots zouden we nu "resellen" maar we willen het script natuurlijk niet gewoon aan iedereen geven. Vandaar dat we de API key nodig hebben van de "klanten" om onze bot te laten traden met hun funds. Er zijn voorbeelden genoeg van Discord groepen waar ze het zo al doen. Dus bepaalde mensen (niet allemaal natuurlijk) vertrouwen het wel.

Vandaar dacht ik om de drempel tot het geven van de API keys te verlagen en om te kijken of de "klant" zijn API keys in geëncrypteerd vorm kan aanleveren.
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 434 keer
Bedankt: 1972 keer

Het lijkt me best dat jij je code verplaatst naar jou server en de "klanten" dit laat aanspreken (in welke taal dan ook). Op die manier kan je je klanten een account (met API key) geven en een configuratie scherm waarin zij hun benodige API keys kunnen ingeven.

Al de rest werkt gewoon niet... zeker al niet met een scripting taal (het enige wat je kan doen is het wat moeilijker maken maar het blijft gepruts).
Tomby
Elite Poster
Elite Poster
Berichten: 6348
Lid geworden op: 01 feb 2006, 12:36
Uitgedeelde bedankjes: 1285 keer
Bedankt: 485 keer
Recent bedankt: 2 keer

Modbreak:
off topic
r2504 schreef:- jou code verhuizen naar een server welke men kan aanspreken met jou API key (en die dus achterliggend de andere services aanroept)
- of voor al je gebruiker ook specifieke API keys te laten aanmaken bij jou bron (als die dat al wil doen - weet die trouwens dat jij z'n services aan het "resellen" bent ?)
Niet van mijn gewoonte maar 3x in 2 zinnen piekt wel enorm :) : het bezittelijk voornaamwoord is 'jouw', niet 'jou'.
Plaats reactie

Terug naar “Development”