Så här använder du Jscrambler 4 för att skydda programmets integritet

Under de senaste åren har JavaScript, som ett plattformsoberoende språk, funnits till ett brett utbud av användningsområden, allt från mobila applikationer till HTML5-baserade spel och Node.js-servrar. Långt borta är de dagar då du bara använde JavaScript för specialeffekter och formvalidering.

Denna utveckling är bra både för utvecklare och konsumenter, som får snabbare uppdateringar till sina applikationer oavsett vilken plattform de är på. 

Men det väcker också frågor om säkerhet. 

Hur kan vi se till att våra program körs som tänkt? Hur verkställer vi våra licenser? Och vad sägs om piratkopiering?

I den här handledningen ser vi på de vanligaste hot mot dina JavaScript-applikationer och hur du kan skydda dig mot dem. Vi kommer också att titta på stegen för att göra Jscrambler 4.0 till en del av ditt utvecklingsarbete för att enkelt hålla dina JavaScript-applikationer säkra.

Säkra kommunikationen mellan din klient och server

Eftersom JavaScript oftast används online är den naturliga platsen att starta anslutningen mellan applikationen som körs på användarnas enheter och din server.

Låt mig först få det här ur vägen: oavsett hur bra skydd du lägger till på kundsidan, måste du alltid börja med antagandet att klienten kan äventyras. Vissa går så långt som att säga att du måste behandla klienten som skadlig. 

Grunden för detta är att det oavsett hur bra du är säker på din klient, kan HTTP-kommunikation mellan JavaScript-klienten och din server alltid manipuleras med hjälp av begäran-sniffingverktyg eller till och med kundanpassade klienter som använder din serverns protokoll. 

Så, om din ansökan talar till en server, innan du lägger till någon annan form av säkerhet på kundsidan, börja med att säkra din server så mycket som möjligt - precis som du skulle när du använder ett vanligt HTML-gränssnitt.

1. Validera dina uppgifter

Du kan tänka dig att säkra din server genom två begrepp: dataintegritet och dataintegritet. 

Dataintegritet innebär att uppgifterna i din ansökan ska förbli korrekta och konsekventa under sin livscykel. Dataintegritet innebär att dina användares data borde vara säkra, och tredje parter får aldrig tillgång till det.

Medan du bör göra parametervalidering redan i JavaScript-klienten, hindrar det inte att hackare skickar felaktiga eller till och med skadliga data till din server. När allt kommer omkring, ser någon som vill krossa din server förmodligen inte ens din användargränssnitt!

Så, när du arbetar med en JavaScript-applikation, gäller alla de vanliga serversidan-valideringarna, från att flytta HTML-tecken för att kontrollera att attributen är av rätt typ, fortfarande gäller.

Ibland är de data som skickats in korrekt formaterad men det är inte meningsfullt i programmets tillstånd, till exempel när en spelare skickar ett omöjligt högt betyg. Du kan skydda din server mot situationer som dessa genom att använda sanitetskontroller och placera så mycket av programmets logik på servern som möjligt. 

2. Håll dina data säkra

En annan del av säkerställandet av klient-serverkommunikationen är att se till att all användarspecifik data förbli konfidentiell och tillgänglig endast av behörig användare. 

Det första steget är att använda SSL i all kommunikation mellan din JavaScript-klient och din server för att hindra andra på internet från att spionera på data som passerat mellan de två.  

Därefter måste du validera att begäran verkligen kommer från rätt användare. Detaljerna för hur man bäst gör detta beror på din ansökan. I webbaserade applikationer är nonces en användbar teknik, medan OAuth-autentisering i ett spelets sammanhang kan vara en mer naturlig metod.

Tänk bara på att du aldrig ska lagra känslig information, t.ex. lösenord eller API-nycklar i din klient. Det är en bra idé att tänka på din server som ett API som kan användas av JavaScript-klienten men även andra kunder på internet.

Du kan inte kontrollera allt på servern

Även om kontrollerna som nämns ovan gäller för alla typer av applikationer, när mer komplexitet läggs till klienten blir vissa verifieringar svåra att göra.

I multiplayer-spel fungerar till exempel hela logiken via din server så länge som spelet är enkelt och du har bara ett begränsat antal spelare. Men när den aktiva användargrundan växer kommer belastningen på servern att göra att du överväger möjligheten att flytta någon av behandlingen till klienten. Samma händer om din spellogik är så komplex att simuleringen på servern skulle ta upp många resurser.

Det är där gränserna blir suddiga. 

Medan idén om att aldrig lita på att klienten låter bra, måste du i praktiken sätta ett tröskelvärde och säga "det här är hur mycket jag litar på min klient" och bara gör sanitetskontroller på servern. Om en del av spelarens åtgärder också påverkar andra spelare, så måste du involvera servern mer, så att de platser där användaren kan skada endast hans eller hennes egna erfarenheter för att klienten ska hantera.

Och vad sägs om de många JavaScript-användarfall där du inte har en server, eller där det är ingen mening att placera programlogiken på servern, t.ex. mobilappar, HTML5-streamingspelare och kartprogram?

Slutligen är det bra att komma ihåg att oavsett hur bra du är säker på din server, är din JavaScript-klient alltid utsatt. Så, om du inte lägger till något slags skydd mot det, är det väldigt enkelt för en angripare (Man-in-the-Browser eller exfiltrationsattacker) för att få tillgång till känslig data eller för att ändra användarupplevelse.

Skydda din JavaScript

Som ett dynamiskt språk kan JavaScript ändras i webbläsaren med hjälp av grundläggande verktyg som webbläsarens inbyggda debugger. Om du vet vad du gör kan du ersätta delar av koden och ändra programmets beteende i flygningen.

Som vi såg ovan bör du se till att ogiltiga data aldrig gör det till databasen på din server. Men vissa förändringar är mer begränsade än detta. Ett program för skadlig program kan lägga till nya knappar i din applikation för att locka användaren till en extern webbplats. Eller användaren kan hacka klienten för att se mer av spelet utan att spela det.

Ändringar som detta kommer inte att bryta hela din ansökan, men de kommer att förändra hur användaren upplever det. När det gäller skadlig programvara kan detta också utgöra ett allvarligt hot mot användarens integritet.

Eftersom JavaScript är ett tolkat språk är det omöjligt att förhindra helt. En dedikerad hacker kommer alltid att hitta ett sätt att komma förbi hindren, precis som en inbrott kan bryta något lås. Men vi kan bryta så hårt att de flesta användare kommer att använda lämpliga metoder (som att bli bra på ditt spel) istället för att hacka ansökan.

Här kan Jscrambler hjälpa dig. 

1. Gör din JavaScript svår att hacka

Jscrambler är en JavaScript-säkerhetsplattform som syftar till att se till att JavaScript-applikationer exekveras på det sätt de utvecklades för att vara.

För att ge Jscrambler ett försök, besök sin hemsida och registrera dig för en gratis provperiod. Om du tycker att den lever upp till dina förväntningar, kan du senare välja en av sina betalda planer.

När du är inloggad, om det finns något text som säger "En ny version av Jscrambler är nu tillgänglig" högst upp på sidan betyder det att du fortfarande ser den gamla versionen. Klicka på Prova det nu.

Jscrambler 4 organiserar ditt arbete i applikationer, som var och en kan bestå av en eller flera JavaScript-filer. Så nästa ser du skärmen för att välja programmet som ska fungera på. 

Om du vill testa funktionaliteten med en egen JavaScript-applikation, klicka på Skapa app

För nu, låt oss dock välja Lekplats. I det här läget får du försöka alla transformationer på ett exemplarskript, medan de omvandlingar du kan ansöka om din faktiska ansökan begränsas av din prenumerationsnivå.

Till vänster ser du File Tree, en lista över filer i din ansökan och en Lägg till knappen för att importera eller skapa nya filer. På lekplatsen är Add-knappen inaktiverad.

Till höger finns en meny för att plocka Språkspecifikationer och Applikationsläge för din app. Jscrambler använder dem för att säkerställa att den transformerade koden kommer att fungera i din valda miljö, med hänsyn till dess begränsningar och möjligheter.

Vi ska nu gå med ES5 och en grundläggande Webbläsare App.

Klicka på filnamnet (clock.js) för att börja arbeta med det.

Filens innehåll kommer att visas mitt på skärmen: källkoden till vänster och den version som förvandlas av Jscrambler till höger.

Välj sedan Kodtransformationer fliken till höger för att avslöja en lista över tillgängliga omvandlingar. Jscrambler låter dig välja de omvandlingar du finner relevanta för din kod. Du kan även använda anteckningar i din kod för att ändra hur en del av koden blir omformad. Det kan vara användbart i prestationskritiska kodblock, till exempel att göra funktioner i spel.

För att testa transformationerna, välj dem en i taget. Klicka sedan på Skydda App längst ner i fönstret för att skapa en ny version av din transformerade kod.

Bredvid knappen visas en mätare som visar effekterna av dessa ändringar på din JavaScript-kod.

I mätaren ser du tre ikoner som representerar kostnaden, motståndskraften och styrkan (går från vänster till höger i skärmbilden ovan) av de omvandlingar du har valt för din ansökan.

För att komma igång, markera kryssrutan framför Styrningsflöde, och klicka sedan på Skydda App.

De Kontrollflödesflätning är en av de kraftfulla nya transformationerna tillagt i Jscrambler 4. Det flattar manusens kontrollflöde så att det blir svårt för en person som läser koden för att följa logiken i din ansökan. 

Fortsätt sedan genom att välja några fler obfuscation-alternativ. När du lägger till mer kommer du att märka hur din kod blir svårare att läsa - och därmed redigera utan att bryta dess funktionalitet.

Även när du klickar på Skydda App igen, även om du inte ändrar inställningarna, märker du att innehållet i det skyddade skriptet ändras varje gång. 

Jscramblers transformationer är polymorf, se till att transformationerna producerar en annan utgång varje gång. På det här sättet, även om någon kunde hacka den nuvarande versionen, nästa gång du kör din kod via Jscrambler, skulle dessa ändringar inte längre fungera.

2. Gör din ansökan skydda sig själv

Hittills har vi pratat om sätt att se till att din ansökan fungerar som förväntat genom att hindra både användaren och utomstående från att ändra källkoden. Men det är inte det enda hotet för din ansökan du behöver oroa dig för. 

Eftersom JavaScript har blivit populärt i fristående och mobila applikationer har piratkopiering blivit en riktig fråga också i detta rike.

Jag är säker på att vi alla har klickat "Visa källa" att lära sig hur man gör en cool ny effekt eller trick och anpassat det vi har lärt oss till våra webbplatser. Det är inte vad jag pratar om här. 

Låt oss istället utgå ifrån att du skapade ett populärt mobilspel i HTML5 och JavaScript. Tack vare JavaScript-portabiliteten kan du använda samma kod på Android, iOS och andra plattformar, och nå en större publik utan extraarbete från att skriva inbyggda versioner för varje miljö. Men det finns ett problem: någon kan kopiera din JavaScript-kod, göra några ändringar och sälja den som sin egen!

Transformationerna i föregående steg hjälper till att förhindra detta genom att koden är svår att läsa och omvända. Förutom dem lägger Jscrambler kodfält, funktionalitet som gör att koden skyddar sig.

Låt oss ta en titt på några av dem.

I Jscrambler, i listan över transformationer, hittar du en rubrik med titeln Kodlås.

Transformationerna i det här avsnittet lägger till ytterligare ett säkerhetslager till din JavaScript-applikation. 

Med hjälp av dem kan du begränsa körning av din kod till en viss uppsättning webbläsare, en tidsram (användbar för demoer som inte ska kunna köras efter förhandsgranskningsperioden är över), på en viss domän (vanligtvis din) och en särskilt operativsystem.

En mer kraftfull funktion för att skydda din kod är Client-sida RASP (Runtime Application Self-Protection). Det ändrar din JavaScript-kod, vilket gör att den försvarar sig från runtime manipulering. Till exempel kommer programmet att sluta fungera om någon försöker öppna felsökaren.

Slutligen, i Optimering avsnitt, välj minification för att minska koden och göra filen mindre.

Klicka sedan på Skydda App, följd av Hämta app ladda ner källkoden och använd den i din ansökan.

Jscrambler håller reda på din omvandlingshistoria, så du kan alltid gå tillbaka till en tidigare version.

3. Använd mallar för att göra ditt arbete enklare

Som vi har sett, konfigurerar du din skyddsnivå genom att markera kryssrutor en efter en är okomplicerad. Men du kan fortfarande påskynda ditt arbetsflöde genom att gruppera dina gemensamma kombinationer av omvandlingar till mallar.

När du har hittat en uppsättning transformationer som du vill lagra för framtida bruk, klicka på Skapa mall längst ner på Applikationsinställningar sektion.

Jscrambler uppmanar dig att ge din mall ett namn och en beskrivning. 

Skriv in något beskrivande för framtiden och klicka på Spara mall

Du kan också använda en av de mallar som redan finns tillgängliga på Dina mallar flik:

Flytta muspekaren ovanför mallnamnen för att läsa mer om dem och förstå när de är meningsfulla. Klicka sedan på dem för att se vilka omvandlingar de gäller för din kod.

4. Gör Jscrambler till en del av ditt utvecklingsarbete

Hittills har vi täckt några sätt på vilka Jscrambler kan hjälpa dig att skydda din ansökan med webben. Medan gränssnittet är intuitivt, när din ansökan växer, vill du ha något mer enkelt.

Också, som jag nämnde tidigare, är Jscrambler polymorf, vilket genererar en annan utgång varje gång. Så det är användbart att springa verktyget igen då och då, även om det inte finns några ändringar i de specifika filerna.

För att göra det här, låt oss titta på Jscrambler kommandoradsverktyg.

Först, ladda ner och installera kommandoradsverktyget med hjälp av npm. På din kommandorad skriver du:

sudo npm installera -g jscrambler

När installationen är klar, gå tillbaka till dina program i Jscrambler admin. 

Observera att för att använda kommandoradsverktyget måste du använda en faktisk applikation istället för lekplatsskriptet. Så, om du inte har en ansökan ännu, skapa en nu.

Efter att ha valt de transformationer du vill tillämpa, klicka på nedladdningsknappen längst upp till höger på sidan. Detta hämtar dina inställningar till din dator som en JSON-fil.

Kopiera JSON-filen till ditt projekt. Förplikta dig inte till versionskontroll eftersom filen innehåller din API-nyckel och hemlighet för att använda Jscrambler API.

Kör sedan jscrambler kommandot att utföra transformationerna på dina JavaScript-filer. 

Till exempel, om du bara har en fil, test.js, du kan köra följande kommando:

$ jscrambler -c jscrambler.json -o test.protected.js test.js 

I kommandot passerade du i JSON-filen som innehåller dina programinställningar med hjälp av -c parametern följt av utdatafilen (-o test.protected.js), och slutligen JavaScript-filen för att skydda.

För att köra skyddet för alla JavaScript-filer i projektkatalogen kan du använda något av följande:

$ jscrambler -c jscrambler.json -o protected / ** / *. js

I det här exemplet definierar du istället en utdatafil en katalog (skyddad) där Jscrambler kommer att lägga resultatet av skyddet.

Nu behöver du inte gå tillbaka till Jscramblers webbgränssnitt varje gång du ändrar dina JavaScript-filer. Detta gör det mer sannolikt att du kommer ihåg steget och därmed behålla din ansökan säker.

Som en ytterligare förbättring kan du också ställa upp Jscrambler-uppgiften att springa när det finns ändringar i dina skript, till exempel med Grunt. Eller det kan till och med vara en uppgift på din kontinuerliga integrationsserver, som körs när en ny version av koden är åtagit.

Slutsats

Jscrambler erbjuder avancerade verktyg för att göra det svårt för crackers, cheaters och malware att injicera oönskade funktioner till din ansökan eller ändra programmets variabler. Det gör det också svårt för andra att kopiera din kod och omfördela den som sin egen.

Säkerhet är ett komplext fält med flera olika hot att överväga. Så, när din JavaScript-kod talar till en server, är den bästa lösningen att använda en kombination av bästa metoder för serverutveckling, robust parametervalidering och en JavaScript-säkerhetsplattform som Jscrambler för att göra klienten ojämn. På så sätt kan du förhindra att de flesta attackerna mot din applikations integritet redan finns i klienten och se till att dina kunder får den erfarenheten du har utformat för att de ska ha.

Jscrambler kan också hjälpa dig att besegra attacker i MitB (MitB) och bedrägerier, bots, 0-dagarshot och APT (Advanced Persistent Threats) genom att upptäcka ändringar som gjorts i DOM och ge dig all information du behöver stoppa dessa attacker. För mer information kontakta [email protected].

För mer information om Jscrambler, dess nya funktioner och senaste uppdateringar, kan du också besöka Jscrambler hemsida.