В этом посте мы подробнее обсудим обфускацию, где она используется и ее преимущества.
Что такое обфускация?
Обфускация - это преднамеренный акт создания запутанного кода, то есть исходного или машинного кода, который трудно понять людям. Это что-то похожее на шифрование, однако машина может понимать код и выполнять его.
Пример URL-адреса для обфускации кода JavaScript.
Обфускация с помощью danstools.
Исходный код:
function hello(name) { console.log('Hello, ' + name); } hello('New user');
После обфускации:
eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d=k||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k)}}return p}('3 0(1){2.4(\'5, \'+1)}0(\'7 6\');',8,8,'hello|name|console|function|log|Hello|user|New'.split('|'),0,{}))
результат работы обеих программ будет одинаковым.
Обфускация может использоваться, чтобы скрыть бизнес-логику от внешнего мира, а также обфускация значительно уменьшит размер файла, поэтому передача данных между сервером и клиентом будет быстрой.
Минификация также вид обфускации, здесь пустые места будут удалены, а переменные будут переименованы.
Примеры:
«Уменьшенный файл: https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular.min.js"
«Исходный файл: https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular.js"
Почему проекты с открытым исходным кодом запутываются?
- Размер кода будет уменьшен.
- В JavaScript время загрузки сократится.
Большинство проектов javascript с открытым исходным кодом минимизированы, чтобы сократить время загрузки и уменьшить размер кода. Во время минификации будет сгенерирован минифицированный файл и файл карты. Используя файл карты, можно получить фактический код. Файл карты для указанного выше файла angular js будет
Файл карты: https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular.js.map
Почему обфускация?
- Размер кода будет уменьшен.
- Скройте бизнес-логику и свой код от других.
- Обратное проектирование очень сложно.
- В JavaScript время загрузки сократится.
Обфускация == Шифрование?
Нет, запутывание! = Шифрование.
- В JavaScript браузер не может выполнять зашифрованный код, тогда как браузер выполняет запутанный код.
- Зашифрованный код всегда требует расшифровки для выполнения.
- Обфусцированный код не требует выполнения деобфускации.
Итог: хорошо запутать код javascript.
Если вы разрабатываете корпоративное приложение, то я считаю, что вы можете использовать такой продукт, как Jscrambler, для обфускации вашего кода. Обратное проектирование запутанного кода действительно сложно, поэтому мы можем скрыть бизнес-логику и основную логику от внешнего мира.