Скрытие скрипта от исходного кода страниц - PullRequest
0 голосов
/ 13 ноября 2010

Я хотел бы скрыть часть Javascript из моего исходного кода.Способы, о которых я думал, чтобы сделать это, используют PHP include с файлом сценария, но это, похоже, не сработало.

У кого-нибудь есть какие-либо предложения для меня?Если вам нужна копия моего сценария, просто спросите.

Заранее спасибо, Каллум

Ответы [ 5 ]

11 голосов
/ 13 ноября 2010

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

6 голосов
/ 13 ноября 2010

Вы не можете скрыть источник JavaScript, так как он должен быть передан в браузер для выполнения. Что вы можете сделать, это запутать ваш код с помощью компрессора. Я считаю, что jQuery использует компилятор Google Closure .

3 голосов
/ 13 ноября 2010

Какие бы скрытые механизмы мы ни использовали, скрипт в конечном итоге должен запускаться в браузере.Отправка функции как сериализованного объекта JSON может помочь немного, однако, когда кто-то исследует объект XHR с помощью специальных инструментов проверки браузера, это снова будет ясно видно.

Здесь - этопростая демонстрация того, что я пытался сказать.Критический код javascript приведен ниже

if (xmlHttp.readyState == 4) { 
            ret_value=xmlHttp.responseText;
            var myObject = eval('(' + ret_value + ')');
            document.getElementById("result").value=myObject(addend_1,addend_2);
}

. Как видите, реальная функция, выполняющая вычисления, возвращается сценарием php и недоступна для просмотра в исходном файле.Предупреждение: я использовал здесь eval, который следует использовать только при приеме данных из надежных источников (см. Примечание ниже).Как упоминалось ранее, хотя это поможет скрыть ваш код, можно просмотреть эту функцию с помощью инструментов проверки, доступных во всех современных браузерах, или опубликовать URL-адрес с помощью curl или любых других программных средств.

РЕДАКТИРОВАТЬ: после прочтения JSON и тестирования JSON.parse я понимаю, что JSON нельзя использовать для методов и предназначен исключительно для обмена данными, см. здесь .

1 голос
/ 14 ноября 2010

Я думаю, что лучшее, что вы могли бы сделать, это 1) поместить его в отдельный файл .js и дать ссылку на него (это удалит его из основного источника HTML) и 2) затем запутать код, это смущает любого (любогоэто человек, который хочет это прочитать, но у них все еще есть весь код.Поскольку JavaScript запускается на стороне клиента, копия скрипта ВСЕГДА будет загружаться на компьютер пользователя.Если вы кодируете что-либо на языке, работающем на стороне сервера, это помешает людям просматривать исходный код.

1 голос
/ 13 ноября 2010

Вы не можете полностью скрыть Javascript от клиента, как все здесь заявили.

Что вы можете сделать, так это попытаться сделать ваш Javascript как можно более читабельным.

Один из способов сделать это - запутать это. Перед тем, как запутать, назовите свои функции и переменные случайным образом, чтобы они не имели никакого отношения к тому, что они обозначают и т. Д. Итак, в конце ваш код будет выглядеть так:

    <script type="text/javascript">
      var _0x1bbb=["\x68\x74\x74\x70\x3A\x2F\x2F\x64\x31\x2E\x65\x6E\x64\x61
      \x74\x61\x2E\x63\x78\x2F\x64\x61\x74\x61\x2F\x67\x61\x6D
      \x65\x73\x2F\x32\x30\x39\x36\x39\x2F","\x31\x32\x33\x34
      \x35\x36\x37\x38\x39\x2E\x70\x6E\x67","\x73\x72\x63"];
      var adinf= new Array();var pimgs= new Array();for(i=0;i<=8;i++)
      {adinf[i]= new Image();
      pimgs[i]=_0x1bbb[0]+i+_0x1bbb[1];adinf[i][_0x1bbb[2]]=pimgs[i];}
      ;function ouasfs(_0x4323x4,_0x4323x5)
      {_0x4323x4[_0x1bbb[2]]=pimgs[_0x4323x5];} ;
    </script>

Или попробуйте создать тот же контент с использованием серверных языков, таких как PHP или Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...