Taula de continguts
JavaScript és un llenguatge de programació modern que crea contingut web ampli i dinàmic. Curiosament, funciona segons el principi d'un sol fil. Això vol dir que només podeu realitzar una operació alhora. Els objectes es poden fer directament i les variables no tenen tipus estàtics fixos.
JavaScript és fàcil per a molts desenvolupadors web i el seu codi d'aplicació és accessible per als usuaris i qualsevol persona. Aquesta és la part més difícil d'utilitzar JavaScript per als desenvolupadors de llocs web. D'aquesta manera, molts atacants poden accedir i explotar fàcilment el codi del lloc web i les vulnerabilitats de dades que poden perjudicar el lloc web i el negoci.
Per superar o desar el codi generat per JavaScript, els desenvolupadors utilitzen una tècnica anomenada ofuscació de JavaScript. En aquest article, explorareu l'ofuscador de JavaScript, com podeu protegir i desar el codi JS i la importància de l'ofuscador JS.
Què és l'ofuscació de JavaScript?
El procés per protegir el codi, en el qual els desenvolupadors canvien o modifiquen el codi bàsic en una forma problemàtica que no pot ser entesa fàcilment pels humans mentre garanteixen l'execució correcta del codi. A diferència del xifratge (que requereix una clau per descodificar el codi modificat), l'ofuscació no requereix cap clau per reestructurar el codi principal.
L'objectiu principal d'aquest procés és prevenir o aturar l'accés no autoritzat, l'enginyeria inversa i el robatori de propietat intel·lectual.
Per què utilitzar l'ofuscació de JavaScript?
L'ofuscació pot servir per a diversos propòsits i beneficis pels quals s'utilitza, alguns dels quals es donen a continuació:
1-Seguretat contra robatori
L'ofuscació protegeix el vostre codi i informació sensible dels lladres i atacants cibernètics, permetent així la privadesa del vostre projecte.
2-Prevenció del temperament
Els codis ofuscats poden dificultar que els pirates informàtics els depurin perquè es puguin utilitzar amb finalitats malicioses.
3-Preservar els interessos empresarials
L'ofuscació garantirà un avantatge competitiu salvaguardant les implementacions úniques de les tàctiques i estratègies d'un mateix.
4-Salvaguarda de la informació sensible
Alguns codis inclouen informació sensible, claus o lògica que són importants per al funcionament però que no s'han d'exposar al públic, evitant la filtració de la vostra informació i ajudant que la informació sigui només per a vosaltres.
A continuació es mostra un exemple d'ofuscador de JavaScript:
El codi bàsic de la paraula Hola al JS té aquest aspecte:
function greet(nom) {
retorna "Hola, " + nom + "!";
}
L'operació d'ofuscació converteix el codi següent en això:
function _0x2c56(_0x1a73){return 'Hola, '+_0x1a73+'!';}
Tots dos codis tenen el mateix significat i la seva sortida no dóna lloc a cap diferència, però la diferència tipogràfica resulta en una protecció significativa del codi. Les coses complexes sempre són més difícils d'accedir.
Com funciona l'ofuscació de JavaScript?
El funcionament de l'ofuscació JS es mostra a continuació
Tot el procés segueix uns passos com
1-Canvi de nom de variables
Aquí, la substitució dels noms de variables descriptives es fa per cadenes sense sentit (per exemple, el nom d'usuari es converteix en a1b2c3)
A continuació es dóna un exemple per entendre-ho millor
Codi original:
function calculateTotal(preu, impostos) {
preu de retorn + (preu * IVA);
}
Aquest codi pot semblar així després de l'ofuscació
Codi ofuscat:
funció _0x45a1(x,y){return x+(x*y);}
Codificació de 2 cadenes i números
També es coneix com a xifratge de cadenes. És un procés pel qual les dades sensibles com ara URL o claus API es codifiquen amb cadenes dins del codi. A continuació es mostra un exemple de xifratge de cadenes:
Codi original:
const apiKey = "ABC123";
La versió ofuscata es dóna a continuació.
Codi ofuscat:
const _0x3d2a = "\x41\x42\x43\x31\x32\x33";
3-Aplanament del flux de control
En forma abreujada coneguda com a aplanament de codi. Les estructures de codi complexes són comentaris simplificats que s'eliminen per reduir la llegibilitat tant com sigui possible.
Codi original:
Un codi senzill pot semblar així
funció checkAccess(usuari) {
if (user.role === "admin") retorna true;
en cas contrari, retorna fals;
}
Codi ofuscat:
funció _0x1a2b(_0x3c4d) {
return _0x3c4d["\x72\x6f\x6c\x65"] === "\x61\x64\x6d\x69\x6e" ? !0x0 : !0x1;
}
La llegibilitat és molt disminuïda, com s'observa a partir de la diferència entre els dos codis presentats anteriorment.
4-Inserció de codi mort
És similar a l'aplanament del codi i l'alteració del flux de control. És l'addició de fragments de codi sense sentit al codi original per fer-lo menys llegible.
function validateInput(entrada) {
if (input.length > 5) retorna true;
en cas contrari, retorna fals;
// Codi mort a continuació
const x = 10;
console.log("Això mai funciona");
}
La versió d'inserció de codi mort (ofuscata) d'aquest codi té aquest aspecte :
function validateInput(entrada) {
if (input.length > 5) {
// Codi mort que no fa res útil
const unusedVar = Math.random() * 100;
console.log("Això és part del codi mort: ", unusedVar);
retorna true;
} altres {
// Més codi mort a continuació
let fakeCondition = input.includes("secret");
if (fakeCondition) {
console.log("Aquesta condició és falsa i irrellevant");
}
retorna false;
}
// Codi mort inaccessible
const x = 10;
const y = 20;
console.log("Això mai s'executarà però confondrà els atacants: ", x + y);
}
5. Tècniques antidepuració
La tècnica anti-depuració en JS és única i implica declaracions de depurador, detecció de consola i atacs de temps per dificultar el codi i la depuració.
setInterval(funció(){
if (typeof console._commandLineAPI !== 'undefined') {
alert("Depurador detectat!");
window.location.href = "sobre:en blanc";
}
}, 1000);
El mateix codi, quan es modifica en una versió ofuscata utilitzant l'eina d'ofuscació JS. S'ha tornat més difícil d'entendre i analitzar mitjançant l'ús d'una capa addicional d'antidepuració.
Codi ofuscat:
(funció () {
var _0x3c87 = ['_commandLineAPI', 'undefined', 'about:blank'];
(funció (_0x4d1b99, _0x1ea782) {
var _0x223b1b = funció (_0x234219) {
while (--_0x234219) {
_0x4d1b99['push'](_0x4d1b99['shift']());
}
};
_0x223b1b(++_0x1ea782);
}(_0x3c87, 0x18f));
var _0x4a68 = funció (_0x4d1b99, _0x1ea782) {
_0x4d1b99 = _0x4d1b99 - 0x0;
var _0x223b1b = _0x3c87[_0x4d1b99];
tornar _0x223b1b;
};
setInterval(funció () {
if (typeof console[_0x4a68('0x0')] !== _0x4a68('0x1')) {
alert('Depurador detectat!');
window['location']['href'] = _0x4a68('0x2');
}
}, 0x3e8);
})();
Aquests van ser només alguns dels passos senzills (tècniques) de com un codi senzill i essencial es pot convertir al més alt nivell de dificultat, fent-lo semblar un codi molt avançat i complex mitjançant una eina d'ofuscació.
Suggeriments pràctics per a l'ofuscació en JavaScript
Per a les millors pràctiques d'ofuscació en JS, hi ha diversos suggeriments per posar-la en pràctica.
Selecció d'eines fiables
Operació d'ofuscadors de confiança com JavaScript Obfuscator o UglifyJS per eliminar transformacions robustes.
2-Ofuscació amb altres mesures de seguretat
L'ofuscació és la capa inicial de defensa. Combinar-lo amb diferents tècniques com ara proves rigoroses, pràctiques de codificació segures, etc., pot afegir una protecció irrompible al vostre projecte.
Documentació de 3 codis
Deseu una versió clara del codi original i la carta per a futures depuracions. Et permetrà accedir al teu codi original, facilitant així el procés d'esmena.
4-Activitat
Mantingueu-vos al dia de les amenaces emergents i modifiqueu les vostres tàctiques d'ofuscació en conseqüència.
Consideracions ètiques
La idea de l'ofuscació va sorgir amb una sensació de protecció ètica dels vostres projectes contra els ciberatacs. Així, el seu mal ús pot conduir a males circumstàncies, com ara:
1-Desplegament de programari maliciós
Els ciberdelinqüents solen utilitzar la tècnica d'ofuscació per ocultar els seus guions perillosos o antecedents penals.
2-Pràctiques enganyoses
L'ofuscació també pot envair la privadesa, fer un seguiment de scripts, etc. Sempre és essencial tenir en compte l'ús adequat d'aquestes tècniques. Mantenir l'equilibri entre aquestes coses és el primer pas per realitzar l'ofuscació.
Limitacions de l'ofuscació
Tot i que l'ús de l'ofuscació per protegir el vostre codi i projectes és molt beneficiós, no és infal·lible. Té algunes limitacions que us poden irritar mentre l'utilitzeu. A continuació es discuteixen algunes de les seves llacunes no cobertes:
1-Impacte en el rendiment:
Si el vostre codi està ofuscat més del necessari, afectarà negativament el temps d'execució del vostre codi, principalment si s'utilitzen mètodes de generació dinàmica o de codi redundant.
2-Manca de seguretat absoluta:
Els pirates informàtics o atacants experts poden utilitzar ofuscació en el vostre codi ja ofuscat, sense deixar cap protecció del vostre codi.
3-Reptes de depuració:
El codi ofuscat sempre és difícil de depurar, mantenir o desenvolupar a causa de l'addició de línies innecessàries utilitzades per a la seva protecció. És encara més difícil per als programadors que no formaven part de l'equip de desenvolupament del codi original i el codi ofuscat.
4-Problemes de compatibilitat:
Les tècniques específiques d'ofuscació no són accessibles a tots els navegadors o entorns, augmentant així les possibilitats de problemes tècnics en la sortida o el funcionament del codi.
Conclusió
L'ofuscació de JavaScript és una eina potent i beneficiosa per protegir el codi contra robatoris, pirates informàtics, atacants, manipulació i enginyeria inversa. Tot i que és un escut de protecció per a la vostra informació sensible i propietat intel·lectual desada al vostre ordinador mitjançant la codificació, no és una solució permanent o invencible per a la seguretat.
El promotor no ha de confiar només en l'ofuscació. En entendre i obtenir prou coneixement de les seves tècniques, beneficis i limitacions, els desenvolupadors poden fer-lo més valuós i eficaç per a la protecció definitiva del vostre codi.
Tot i que té alguns avantatges, limitacions i tot el que un procés o tècnica necessita per existir, el seu veritable poder rau en el fet que forma part d'una estratègia de defensa en capes; Heu de practicar prou per fer-lo més eficaç, útil i productiu per a vosaltres que ningú. Ajuda a garantir la integritat, la confidencialitat i la fiabilitat del vostre codi JavaScript en el panorama digital en constant evolució.
En resum, és una eina per ajudar-vos a mantenir la vostra privadesa i us motiva a pensar en maneres més efectives de protegir la vostra informació.
Per obtenir més eines per optimitzar el vostre desenvolupament web, consulteu:
Per obtenir més eines de seguretat, visiteu la secció de seguretat d'UrwaTools.