Как защитить исходный код в электронном настольном приложении [duplicate]

Вы можете использовать функции empty () и isset (). Если вы хотите, чтобы он работал с разными файлами, просто измените action='yourphp.php' на html, который я вам даю, и store the PHP script на этот файл yourphp.php. Также вам нужно изменить index.html на index.php, чтобы активировать функции PHP.

PHP

<?php

    error_reporting(0);
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'From: yoursite.com'; 
    $to = 'contact@yoursite.com'; 
    $subject = 'Customer Inquiry';
    $body = "From: $name\n E-Mail: $email\n Message:\n $message";


    if ($_POST['submit']){
                if (!(empty($_POST['name']))) {
                        if (!(empty($_POST['email']))){
                            if (!(empty($_POST['message']))){
                                mail ($to, $subject, $body, $from);
                                echo '<p>Your message has been sent!</p>';
                            }else{
                                echo '<p>Fill your message please.</p>';}
                        }else {
                            echo '<p>Fill your email please.</p>';}
                }else{
                    echo '<p>Fill your name please.</p>';}              
    }else{
            echo '<p>Fill the form.</p>';}
?>

HTML

<html>
    <form method="post" action="?">
        <table>
            <tr><td>Name</td><td><input type='text' name='name' id='name'/></td></tr>
            <tr><td>Email</td><td><input type='text' name='email' id='email'/></td></tr>
            <tr><td>Message</td><td><input type='text' name='message' id='message'/></td></tr>
            <tr><td></td><td><input type='submit' name='submit' id='submit'/></td></tr>
        </table>
    </form>
</html>

С наилучшими пожеланиями!

669
задан Chuck Le Butt 16 May 2016 в 12:57
поделиться

24 ответа

Вы определенно должны рассмотреть возможность взглянуть на Obfuscriptor .

Я выхожу за пределы типичных трюков Javascript, которые мы видели из других инструментов, таких как YUI Compressor или Google Closure .

Обфусканный код больше похож на зашифрованный. В отличие от всего, что я видел раньше.

388
ответ дан Mike 21 August 2018 в 04:21
поделиться
  • 1
    Я хочу добавить, что выполнение кодировки base64 не будет иметь никакого преимущества для безопасности, поскольку это процедура с тривиальным обращением. Даже шифрование не поможет, если оно расшифровано на стороне клиента. Единственный способ обеспечить безопасность строки - это заставить клиента ТОЛЬКО видеть зашифрованную строку, и она передается – Claudiu 11 October 2008 в 22:13
  • 2
    сервер для дальнейшей обработки. – Claudiu 11 October 2008 в 22:14
  • 3
    FYI, онлайн-компрессор YUI можно найти здесь: refresh-sf.com/yui – mtness 19 January 2010 в 15:45
  • 4
    Шифрование строковых значений будет иметь лишь незначительное преимущество, чем их кодирование base64, если их необходимо расшифровать браузером для их использования. Причина в том, что вам также придется предоставить браузеру ключ шифрования, и все, что может сделать браузер, может тоже сделать. – Ben 1 January 2012 в 07:27
  • 5
    Спасибо за ссылку! Просто попробовал obfuscriptor и зашифровал код действительно (без ключа ???). И сжал мой скрипт с 211 до 36 Kb! – Arturo 25 March 2012 в 22:41
  • 6
    Когда я делаю свою работу с YUI Compressor, я убеждаюсь, что он использует «безопасный». методы минимизации, т. е. сохраняют полуколоны --preserve-semi. Переписывание частных переменных в a, b, c и т. Д. Обычно безопасно. Еще одна вещь, которую я делаю, заключается в том, чтобы minifier поместил разрыв строки после каждой точки с запятой в код --line-break 0. Тогда в производстве, если это ошибки, у меня меньше всего допустимая ссылочная строка для работы и может найти этот код в моей копии разработки. В противном случае вы просто получите ошибку на массивной строке кода и не знаете, где ошибка. – zuallauz 15 February 2013 в 03:36
  • 7
    Обратите внимание: Obfuscriptor предупреждает вас, что он не работает с IE. Для некоторых это разбойник сделки. – Alan McBee - MSFT 19 August 2013 в 23:42
  • 8
    Ссылка на ответ больше не указывает на инструмент. Я не мог найти другую живую ссылку на нее. – buzoherbert 1 February 2016 в 10:47
  • 9
    первая ссылка мертва. & Quot; Obfuscriptor & Quot; – Alp Altunel 17 May 2017 в 14:46
389
ответ дан Mike 31 October 2018 в 23:43
поделиться

Как обфускатор / компрессор JavaScript / HTML / CSS вы также можете попробовать Patu Digua .

3
ответ дан Adrian 21 August 2018 в 04:21
поделиться

Попробуйте JScrambler . Я недавно дал ему отклик и был впечатлен им. Он предоставляет набор шаблонов для обфускации с предопределенными настройками для тех, кто не заботится о деталях и просто хочет быстро это сделать. Вы также можете создавать пользовательскую обфускацию, выбирая любые преобразования / методы, которые вы хотите.

18
ответ дан Chad Hedgcock 21 August 2018 в 04:21
поделиться
  • 1
    Подписка JScrambler очень дорогая ... Самая дешевая подписка требует минимум 3-месячной цены $ 145 - это безумие. – barbushin 11 August 2013 в 12:16
  • 2
    У них теперь есть бесплатный план. Другие планы подписки по-прежнему очень дороги. – user7610 1 September 2013 в 22:30
  • 3
    Свободный план включает только оптимизацию и минимизацию. – Jean Hominal 24 October 2014 в 16:49
  • 4
    «Свободный план включает в себя оптимизацию и минимизацию», да нет. Извинения и оптимизация не идут вместе. – NiCk Newman 18 May 2015 в 05:17
  • 5
    Смотря на веб-сайт JScrambler сегодня и многое другое, поэтому планы ценообразования я не вижу свободной возможности. Только бесплатная пробная версия. – KDT 30 January 2016 в 18:54

Этот параметр уменьшает , но не запутывает. Если вы не хотите использовать командную строку Java, вы можете вставить свой javascript в веб-форму.

3
ответ дан Chris S 21 August 2018 в 04:21
поделиться

Что бы я сделал:

A. Troll the hacker!

Это будет во второй части мой поддельный / запутанный секретный код javascript LAUNCHER.

Что этот код?

  1. загружает реальный код
  2. устанавливает пользовательский заголовок
  3. помещает пользовательскую переменную

var ajax=function(a,b,d,c,e,f){
 e=new FormData();
 for(f in d){e.append(f,d[f]);};
 c=new XMLHttpRequest();
 c.open('POST',a);
 c.setRequestHeader("Troll1","lol");
 c.onload=b;
 c.send(e);
};
window.onload=function(){
 ajax('Troll.php',function(){
  (new Function(atob(this.response)))()
 },{'Troll2':'lol'});
}

B.

  1. , который имеет тот же код, что и выше в base64
  2. , это не код javascript SECRET

    g4]


(new Function(atob('dmFyIGFqYXg9ZnVuY3Rpb24oYSxiLGQsYyxlLGYpe2U9bmV3IEZvcm1EYXRhKCk7Zm9yKGYgaW4gZCl7ZS5hcHBlbmQoZixkW2ZdKTt9O2M9bmV3IFhNTEh0dHBSZXF1ZXN0KCk7Yy5vcGVuKCdQT1NUJyxhKTtjLnNldFJlcXVlc3RIZWFkZXIoIlRyb2xsMSIsImxvbCIpO2Mub25sb2FkPWI7Yy5zZW5kKGUpO307d2luZG93Lm9ubG9hZD1mdW5jdGlvbigpe2FqYXgoJ1Ryb2xsLnBocCcsZnVuY3Rpb24oKXsgKG5ldyBGdW5jdGlvbihhdG9iKHRoaXMucmVzcG9uc2UpKSkoKX0seydUcm9sbDInOidsb2wnfSk7fQ==')))()

C Создайте жесткий файл php с реальным кодом внутри

Что делает этот php-код?

  1. Проверяет правильный реферер (домен / dir / код вашей пусковой установки)
  2. Проверяет пользовательский HEADER
  3. Проверяет пользовательскую переменную POST

Если все в порядке, он покажет вам правильный код, а также фальшивый код или запрет ip, закрыть страницу .. что угодно.

<?php
$t1=apache_request_headers();
if(base64_encode($_SERVER['HTTP_REFERER'])=='aHR0cDovL2hlcmUuaXMvbXkvbGF1bmNoZXIuaHRtbA=='&&$_POST['Troll2']=='lol'&&$t1['Troll1']='lol'){
 echo 'ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSkuaW5uZXJUZXh0PSdBd2Vzb21lJzsNCg==';//here is the SECRET javascript code
}else{
 echo 'd2luZG93Lm9wZW4oJycsICdfc2VsZicsICcnKTt3aW5kb3cuY2xvc2UoKTs=';
};
?>

base64 referrer = http://here.is/my/launcher.html

SECRET javascript = document.body.appendChild(document.createElement('div')).innerText='Awesome';

FAKE = window.open('', '_self', '');window.close();

Теперь .. если вы определяете обработчики событий в javascript SECRET, это, вероятно, доступно .. вам нужно определить их снаружи с помощью запускать код и указывать на вложенную функцию SECRET.

SO ... есть ли простой способ получить код? document.body.appendChild(document.createElement('div')).innerText='Awesome';

Я не уверен, что это работает, но я использую хром и проверенные элементы, ресурсы, сеть, источники, временные рамки, профили, аудиты, но я не нашел строку выше.

note1: если u открыть URL Troll.php из Inspect element-> network in chrome, вы получите поддельный код.

note2: весь код написан для современных браузеров.

launcher.html

<!doctype html><html><head><meta charset="utf-8"><title></title><script src="data:application/javascript;base64,KG5ldyBGdW5jdGlvbihhdG9iKCdkbUZ5SUdGcVlYZzlablZ1WTNScGIyNG9ZU3hpTEdRc1l5eGxMR1lwZTJVOWJtVjNJRVp2Y20xRVlYUmhLQ2s3Wm05eUtHWWdhVzRnWkNsN1pTNWhjSEJsYm1Rb1ppeGtXMlpkS1R0OU8yTTlibVYzSUZoTlRFaDBkSEJTWlhGMVpYTjBLQ2s3WXk1dmNHVnVLQ2RRVDFOVUp5eGhLVHRqTG5ObGRGSmxjWFZsYzNSSVpXRmtaWElvSWxSeWIyeHNNU0lzSW14dmJDSXBPMk11YjI1c2IyRmtQV0k3WXk1elpXNWtLR1VwTzMwN2QybHVaRzkzTG05dWJHOWhaRDFtZFc1amRHbHZiaWdwZTJGcVlYZ29KMVJ5YjJ4c0xuQm9jQ2NzWm5WdVkzUnBiMjRvS1hzZ0tHNWxkeUJHZFc1amRHbHZiaWhoZEc5aUtIUm9hWE11Y21WemNHOXVjMlVwS1Nrb0tYMHNleWRVY205c2JESW5PaWRzYjJ3bmZTazdmUT09JykpKSgp"></script></head><body></body></html>

Troll.php

<?php $t1=apache_request_headers();if(/*base64_encode($_SERVER['HTTP_REFERER'])=='PUT THE LAUNCHER REFERER HERE'&&*/$_POST['Troll2']=='lol'&&$t1['Troll1']='lol'){echo 'ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSkuaW5uZXJUZXh0PSdBd2Vzb21lJzsNCg==';}else{echo 'd2luZG93Lm9wZW4oJycsICdfc2VsZicsICcnKTt3aW5kb3cuY2xvc2UoKTs=';}; ?>

EDIT

22
ответ дан cocco 21 August 2018 в 04:21
поделиться
  • 1
    ой и да, я бы тоже запутывал код javascript. – cocco 4 July 2013 в 12:14
  • 2
    Это то, о чем я только думал, троллинг взломщика. Я бы хотел увидеть что-то вроде этого, не используя PHP :) – camou 19 May 2015 в 17:33
  • 3
    Даже если это смешно, веб-разработчик, который может правильно проверить сайт, может каким-то образом получить исходный код. Я действительно думаю, что нет способа скрыть данные любого типа в тот момент, когда вы разместите его в Интернете. – cocco 19 May 2015 в 17:38
  • 4
    Думаю, это не какая-то обфускация. однако знает, как открыть консоль, он также может знать о кодировке / декодировании base64, очень просто. – T.Todua 14 December 2017 в 12:44

Обфускация никогда не может работать. Для тех, кто действительно хочет получить код, это всего лишь удар скорости. Хуже того, это заставляет ваших пользователей исправлять ошибки (и отправлять исправления к вам), а также затрудняет диагностику проблем в полевых условиях. Это пустая трата вашего времени и денег.

Поговорите с адвокатом об законодательстве об интеллектуальной собственности и о ваших юридических вариантах. «Open Source» не означает, что «люди могут читать источник». Вместо этого Open Source - это определенная модель лицензирования, предоставляющая разрешение на свободное использование и изменение вашего кода. Если вы не предоставляете такую ​​лицензию, тогда люди, которые копируют ваш код, нарушают и (в большинстве стран мира), у вас есть законные варианты, чтобы остановить их.

Единственный способ защитить код действительно чтобы не отправить его. Переместите важный код на стороне сервера и получите свой общедоступный код Javascript, чтобы Ajax вызывал его.

См. Мой полный ответ об обфускаторах здесь.

115
ответ дан Community 21 August 2018 в 04:21
поделиться
  • 1
    +1 на адвоката, но это может не работать в других странах / юрисдикциях. – jmort253 17 February 2011 в 00:07
  • 2
    Юристы, вероятно, создают больше затрат / проблем, чем потерянный код, очень тщательно думают и организуют много денег для привлечения адвокатов! – andora 10 March 2011 в 14:14
  • 3
    -1: Я считаю, что найти адвоката, который понимает JavaScript, будет сложно ... Не упоминать о гонорарах и количестве времени, необходимых для поиска «нарушителей». Может ли кто-то действительно нарушать лицензию, которая похоронена в файлах HTML / JavaScript, если он никогда ничего не подписывал? +1 для вызовов AJAX. – Alerty 30 October 2011 в 19:14
  • 4
    @Alerty 1) Лицензии в основном касаются предоставления использования материалов, защищенных авторскими правами. У вас мало права использовать его без лицензии. Вам не нужно подписывать его, чтобы получить права. Лицензия отличается от контракта. 2a) Поскольку вопрос о том, что люди копируют и используют HTML / Javascript без разрешения, лицензия не «похоронена», она находится прямо там, где делаются вещи. 2b) Вы не имеете права использовать чужие защищенные авторским правом материалы без лицензии. 3) Адвокат не должен понимать Javascript, а только закон об интеллектуальной собственности. – Schwern 31 October 2011 в 21:06
  • 5
    @Alerty Не будьте тупыми. Это касается наказания тех, кто копирует файл для использования на своем собственном сайте без разрешения. То, о чем вы говорите, это контракт, а не лицензия. Контракты требуют взаимного согласия и являются датой и взятием. Лицензии дают вам право использовать интеллектуальную собственность. Лицензии - это один из способов (владелец предоставляет вам вещи), вы не обязаны подписывать, потому что вы ничего не даете. Многие «Соглашения о лицензии на программное обеспечение» на самом деле являются контрактами, потому что они выходят за рамки лицензирования собственности и иногда смехотворные вещи, такие как право подать в суд. – Schwern 2 November 2011 в 02:01

Приложение с открытым исходным кодом на основе Javascript довольно глупо. Javascript - интерпретируемый язык на стороне клиента. Obfuscation - это не большая защита.

Обфускация JS обычно выполняется, чтобы уменьшить размер скрипта, а не «защищать» его. Если вы находитесь в ситуации, когда вы не хотите, чтобы ваш код был общедоступным, Javascript не подходит для языка.

Существует множество инструментов, но большинство из них имеют слово «компрессор» ( или "minifier") на свое имя по причине ..

13
ответ дан dbr 21 August 2018 в 04:21
поделиться

Я бы предложил сначала минимизировать что-то вроде YUI Compressor, а затем преобразовать всю строку и числа в значения HEX, используя что-то вроде http://www.javascriptobfuscator.com/

При этом код будет практически недоступен для понимания, и я думаю, что на этом этапе потребуется больше времени, чтобы Хакер мог повторно ввести ваш код, чем на самом деле, если он переписал с нуля. Переписывание и клонирование - это то, что вы не можете остановить. Ведь мы свободные люди!

4
ответ дан Dynamite Blitzer 21 August 2018 в 04:21
поделиться

Вы можете запутать источник javascript, который вам нужен, но он всегда будет реконструирован только благодаря тому, что на клиентском компьютере будет фактически запущен весь исходный код ... лучший вариант, о котором я могу думать, - это все ваша обработка, выполненная с использованием кода на стороне сервера, и все javascript-код клиента - это запросы на отправку для самого сервера. В противном случае любой пользователь всегда сможет отслеживать все операции, выполняемые этим кодом.

Кто-то упомянул base64, чтобы сохранить строки в безопасности. Это ужасная идея. Base64 сразу узнаваем по типам людей, которые хотели бы перепроектировать ваш код. Первое, что они сделают, это unencode и посмотреть, что это такое.

50
ответ дан El Ronnoco 21 August 2018 в 04:21
поделиться
  • 1
    Куда бы я ни пошел, наиболее распространенный ответ на вопрос «как я могу запутать свой Javascript?» & Quot; «вам не следует беспокоиться об этом, потому что кто-то может не обмануть его». На самом деле это не ответ. – Travis Wilson 31 July 2009 в 17:00
  • 2
    @Vivek: Немного поздно, но я действительно имел в виду «серверный код». Можно запустить javascript не в браузере, просто на сервере, но я не знаю, насколько это распространено. – Claudiu 6 October 2010 в 23:00
  • 3
    @Travis: Я не сказал «вам не стоит беспокоиться об этом». Я просто сказал, что если вы хотите программу с закрытым исходным кодом, вам не захочется писать ее на клиентском javascript, потому что любая запутанность, которую вы делаете, не помешает ей быть (довольно легко) реконструированной. – Claudiu 6 October 2010 в 23:01
  • 4
    Правильно. Что никоим образом не отвечает «как я могу запутать свой JavaScript». Обфускация не является абстрактным понятием, она техническая. Оп просто спросил «как?». – Madbreaks 19 March 2014 в 08:10
  • 5
    @Madbreaks: Вопрос был в контексте того, чтобы не создавать его код с открытым исходным кодом. Непосредственный технический ответ является принятым, но лучший ответ в контексте (как и в том, что вы действительно пытаетесь сделать?) - это IMO, что у вас не может быть JavaScript-клиент, который не является открытым исходным кодом, потому что у каждого есть источник, независимо от того, как вы его запутываете. В любом случае оба ответа здесь, и люди могут читать и извлекать выгоду от обоих. – Claudiu 19 March 2014 в 08:58

Вы не можете защитить код на стороне клиента: просто нажмите F12 в Google Chrome, приостановите выполнение javascript , и вы получите все строки, даже зашифрованные. Украсить it и переименовать переменные , и вы получите почти исходный код.

Если вы пишете JavaScript на стороне сервера (то есть NodeJS) боится кто-то взломает ваш сервер и хочет, чтобы хакер усложнил работу, давая вам больше времени, чтобы получить ваш доступ, а затем используйте компиляторы javacript :

Вам нужно использовать Closure Compiler на Advanced Compilation, так как это единственный инструмент, который переименовывает все ваши переменные, даже если они используются в нескольких файлах / модулях. Но у него просто проблема: он работает только в том случае, если вы введете стиль кодирования .

11
ответ дан Gustavo Rodrigues 21 August 2018 в 04:21
поделиться
  • 1
    Компоновка Closure не обфускает код: P – NiCk Newman 18 May 2015 в 05:15
  • 2
    Это не сделано для него, но хорошо работает: он не добавляет дополнительный код, например, некоторые компиляторы (которые обычно могут быть отменены, какие инструменты я цитировал), но меняет его на необычные способы, некоторые даже трудно отменить, и удалить неиспользуемые код, который по сравнению с реальной обфускацией хорош для производительности. – Gustavo Rodrigues 18 May 2015 в 10:28
  • 3
    Не хорошая идея. Для минимизации / компиляции кода на стороне сервера могут возникнуть проблемы с безопасностью, если у минификатора есть ошибка: zyan.scripts.mit.edu/blog/backdooring-js – mgol 24 August 2015 в 17:13
  • 4
    Вышеупомянутая ошибка относится только к UglifyJS: она не применяется к Closure Compiler. – Gustavo Rodrigues 29 August 2015 в 14:26
  • 5
    – Fillipo Sniper 17 October 2018 в 00:35

Я использовал это в прошлом, и он неплохо работает. Это не бесплатно, но вы должны обязательно взглянуть. JavaScript Obfuscator & amp; Кодер

2
ответ дан Henry 21 August 2018 в 04:21
поделиться

Я удивлен, что никто не упомянул компилятор Google Closure . Это не просто minify / compress, он анализирует, чтобы найти и удалить неиспользуемый код, и переписывает для максимальной минимизации. Он также может выполнять проверку типов и будет предупреждать о синтаксических ошибках.

Недавно JQuery переключился с YUI Compresser на Closure Compiler и увидел «улучшение »

129
ответ дан Jason Hall 21 August 2018 в 04:21
поделиться
  • 1
    да, но недавно они оставили компилятор Closure и теперь используют UglifyJS. Код JQuery был неудачным после сжатия с помощью компилятора закрытия – Chielus 24 May 2011 в 08:32
  • 2
    Я хотел бы отметить, что если вы работаете с угловыми. этот инструмент не будет работать из-за инъекции зависимостей и переименования аргументов, если только флажок я не вижу. – iConnor 17 August 2013 в 00:41
  • 3
    Полезный инструмент, но он не делает обфускации, что, вероятно, почему никто не упомянул об этом. – Madbreaks 26 March 2014 в 01:18
  • 4
    @Madbreaks with Advanced Optimizations ( developers.google.com/closure/compiler/docs/api-tutorial3 ), он минимизирует код до обфускации. Например, переменные можно переименовать для краткости. – Jason Hall 27 March 2014 в 00:43
  • 5
    – Fillipo Sniper 17 October 2018 в 00:44

Вопреки большинству других ответов, которые я предлагаю против YUI Compressor; вы должны использовать Google Closure .

Не так много, потому что он сжимает больше, но в основном потому, что он будет улавливать ошибки JavaScript, такие как a = [1,2,3,];, которые заставляют IE сходить с ума.

17
ответ дан jball 21 August 2018 в 04:21
поделиться
  • 1
    не следует проверять ваш код на наличие ошибок и несовместимости в любом случае до obfuscating? не имеет ничего общего с обфускацией – Blauhirn 29 November 2015 в 14:35

Попробуйте этот инструмент Javascript Obfuscator

Я использовал его в своей игре HTML5, и он не только уменьшил его размер с 950 КБ до 150, но и сделал нечитаемые компиляторы и мини-блокировки исходного кода обратимы, я лично не знаю, как отменить это обфускацию.

3
ответ дан Jerczu 21 August 2018 в 04:21
поделиться

Вы пробовали Bananascript ? Он производит сильно сжатый и полностью нечитаемый код.

4
ответ дан niutech 21 August 2018 в 04:21
поделиться
  • 1
    он сжимает код красиво, но просто измените eval() в последней строке на console.log(), и ваша консоль выплюнет все это – LobsterMan 20 March 2013 в 20:48

Проблема с интерпретируемыми языками заключается в том, что вы отправляете источник, чтобы заставить их работать (если у вас нет компилятора для байт-кода, но опять же, это довольно тривиально для декомпиляции).

Итак, если вы не хотите жертвовать производительностью, вы можете действовать только на имена переменных и функций, например. заменяя их a, b ... aa, ab ... или a101, a102 и т. д. И, конечно же, удалите столько пространства / новых строк, сколько сможете (это так называемые компрессоры JS). Обфускация строк будет иметь успех, если вы должны зашифровать их и расшифровать их в режиме реального времени. Кроме того, отладчик JS может показывать окончательные значения ...

17
ответ дан PhiLho 21 August 2018 в 04:21
поделиться

Я использую Jasob в течение многих лет, и это руки вниз лучший obfuscator там. Он имеет расширенный интерфейс, но по-прежнему интуитивно понятен и прост в использовании. Он также будет обрабатывать файлы HTML и CSS.

Лучший способ использовать это префикс для всех ваших private переменных чем-то вроде подчеркивания, а затем использовать функцию sort объединить их все вместе и проверить их как цели для обфускации.

Пользователи могут по-прежнему просматривать ваш источник, но гораздо труднее расшифровать, когда ваши частные переменные преобразуются из чего-то вроде _sUserPreferredNickName в a.

Двигатель автоматически подсчитывается количество целевых переменных и приоритет их для получения максимального сжатия.

Я не работаю для Jasob, и я ничего не получаю от их продвижения, просто предлагая дружеские советы. Недостатком является то, что он не является бесплатным и немного дорогим, но все же стоит того, чтобы укладываться в альтернативные варианты - «свободные» варианты даже не приближаются.

4
ответ дан Shadow Wizard 21 August 2018 в 04:21
поделиться
  • 1
    Джейсон, по-видимому, больше минералог, чем обфускатор. Я что-то упускаю? – Alan McBee - MSFT 20 August 2013 в 00:03

Я использую утилиту Closure-Compiler для обфускации java-скрипта. Он минимизирует код и имеет больше возможностей для обфускации. Эта утилита доступна в коде Google по адресу ниже: Инструменты закрытия

Но теперь дни, когда я слышу большую часть UglifyJS. Вы можете найти различное сравнение между Closure Compiler и UglifyJS, в котором Uglify кажется победителем. UglifyJS: быстрый новый компрессор JavaScript для Node.js, который находится на грани с закрытием

Вскоре я бы дал шанс UglifyJS.

4
ответ дан shaILU 21 August 2018 в 04:21
поделиться

Packer Дина Эдварда - отличный обфускатор, хотя он в первую очередь запутывает код, а не любые строковые элементы, которые у вас могут быть в вашем коде.

См. Онлайн-инструмент сжатия Javascript и выберите Packer (Dean Edwards) из раскрывающегося списка

5
ответ дан smdrager 21 August 2018 в 04:21
поделиться

Если вы используете библиотеку JavaScript, рассмотрите Dojo Toolkit, который совместим (после незначительных изменений) с компиляцией расширенного режима Closure Compiler.

Dojo - Библиотека только JavaScript, совместимая с компилятором Closure

Код, скомпилированный с расширенным режимом Closure, практически невозможно перепрограммировать, даже проходя через декоратор, так как вся кодовая база кода (в том числе в библиотеке) обфускается , В среднем он также на 25%.

JavaScript-код, который просто минимизирован (YUI Compressor, Uglify и т. Д.), Легко реверсировать после прохождения через декодер.

2
ответ дан Stephen Chung 21 August 2018 в 04:21
поделиться

Существует ряд инструментов для обфускации JavaScript, которые свободно доступны; однако, я думаю, важно отметить, что трудно запутать JavaScript до такой степени, что он не может быть реконструирован.

С этой целью существует несколько вариантов, которые я использовал в некоторой степени сверхурочно:

  • Компрессор YUI . JavaScript! JavaScript-компрессор делает хорошую работу по уплотнению кода, который улучшит время загрузки. Существует небольшой уровень обфускации, который работает относительно хорошо. По сути, Compressor будет изменять имена функций, удалять пустое пространство и изменять локальные переменные. Это то, что я использую чаще всего. Это инструмент Java с открытым исходным кодом.
  • JSMin - это инструмент, написанный Дугласом Крокфордом, который пытается минимизировать ваш источник JavaScript. По словам Крокфорда, «JSMin не запутывает, но он угадает». Основной задачей является минимизация размера вашего источника для более быстрой загрузки в браузерах.
  • Бесплатный JavaScript Obfuscator . Это веб-инструмент, который пытается обфускать ваш код, фактически кодируя его. Я думаю, что компромиссы его формы кодирования (или обфускации) могут зависеть от размера файлов; однако это вопрос личных предпочтений.
44
ответ дан Tom 21 August 2018 в 04:21
поделиться
  • 1
    Поскольку код Javascript должен выполняться на машине клиента, не просто сложно запутать точку, где код не может быть изменен, но невозможно . – Schwern 25 October 2008 в 23:27
  • 2
    речь идет о статистике. каков порог того, что кто-то получит доступ к вашему коду с обфускацией и без? они все равно могут получить доступ, но чем выше порог, тем меньше людей. чем меньше людей знают о чем-то, тем безопаснее что-то. стандартная классификация безопасности. – Cris Stringfellow 22 February 2012 в 13:45
  • 3
    Вы пробовали zeroify.com obfuscator? Он использует Minification and Compression, но также переименовывает классы и идентификаторы, чтобы усложнить понимание классов и объектов – SED 20 May 2017 в 02:02
  • 4
    @PeterR поиск / замена в текстовом редакторе сделает вашу жизнь намного труднее, пытаясь ее прочитать или перепроектировать. это не идеально, но добавляет лишний слой раздражения / трудности, удаляя подсказки контекста. большинство программистов не так умны, как вы, и это делает этот такой отличный сдерживающий фактор. – SED 22 August 2017 в 23:06
  • 5
    @SED Я не знаю ни одного программиста, который не смог найти / заменить кучу [ZER0O00OIFY, ZER0000OIFY, ZEROO00OIFY, ZEROOO0OIFY] vars как минимум [var1, var2,..] за одну минуту. Я могу буквально отменить, повторно отступать и искать / заменять имена переменных в течение двух минут. И нет, я умнее, чем средний младший Дев. Простой факт заключается в том, что нет возможности скрывать клиентскую сторону JS. Вы можете купить себе 5 минут, MAX, но это бесполезно. Этот материал действительно просто продает кого-то, кто не знает код на добавленную «Безопасность». Никто, кто когда-либо писал линию JS, не купил бы это дерьмо. – Peter R 23 August 2017 в 07:11

У меня создается впечатление, что некоторые предприятия (например, JackBe) помещают зашифрованный код JavaScript внутри * .gif-файлов, а не JS-файлов, в качестве дополнительной меры обфускации.

3
ответ дан xgMz 21 August 2018 в 04:21
поделиться

Я рекомендую JavaScript Utility Патрика Дж. О'Нила. Он может запутывать / сжимать и сжимать, и, похоже, это очень хорошо. Тем не менее, я никогда не пытался интегрировать его в скрипт сборки любого типа.

Что касается обфускации против минимизации - я не большой поклонник первого. Это делает невозможным отладку (Ошибка в строке 1 ... «Подождите, есть только одна строка»), и они всегда требуют времени для распаковки. Но если вам нужно ... хорошо.

11
ответ дан ʍǝɥʇɐɯ 21 August 2018 в 04:21
поделиться
  • 1
    Но обфускация не обязательно сжимает ее до одной строки, она может быть такой же простой, как изменение имен функций и переменных или преобразование строк в base64. Minifying ставит весь код на одну строку. – rw-nandemo 18 June 2014 в 17:19
  • 2
    В настоящее время UglifyJS представляется лучшим выбором. Автор тоже классный парень! :) – Tsvetomir Tsonev 17 February 2016 в 14:47
  • 3
    Что касается отладки, вы можете в основном генерировать исходные коды, которые вы можете включить при тестировании, чтобы вы могли видеть, на какой строке произошла ошибка, даже если она была уменьшена. – Luca Steeb 4 August 2016 в 12:26
Другие вопросы по тегам:

Похожие вопросы: