Как скрыть код javascript на веб-странице?

Можно ли скрыть код Javascript из html веб-страницы, когда исходный код просматривается через функцию просмотра исходного кода браузера?

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

Ответ 1

Я не уверен, что кто-то другой фактически обратился к вашему вопросу напрямую, который просматривается кодом из команды View Source. [/p >

Как говорили другие, нет способа защитить javascript, предназначенный для работы в браузере от определенного зрителя. Если браузер может запустить его, то любой определенный человек может его просмотреть и запустить.

Но, если вы поместите свой javascript в внешний файл javascript, который входит в состав:

<script type="text/javascript" src="http://mydomain.com/xxxx.js"></script>

тогда код javascript не будет сразу виден с помощью команды "Просмотр источника" - только тег script будет таким образом виден. Это не означает, что кто-то не может просто загрузить этот внешний файл javascript, чтобы увидеть его, но вы спросили, как сохранить его в браузере View Source, и это сделает это.

Если вы хотите действительно сделать больше работы для просмотра источника, вы сделаете все следующее:

  • Поместите его во внешний файл .js.
  • Обфускация файла таким образом, что большинство собственных имен переменных заменяются короткими версиями, так что все ненужные пробелы удаляются, поэтому их невозможно прочитать без дальнейшей обработки и т.д.
  • Динамически включать файл .js путем программного добавления тегов script (например, Google Analytics). Это затруднит доступ к исходному коду из команды View Source, так как там не будет легкой ссылки, чтобы щелкнуть там.
  • Положите так много интересной логики, которую вы хотите защитить на сервере, которую вы извлекаете через вызовы ajax, а не локальной обработки.

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

Ответ 2

Нет, это невозможно.

Если вы не отдали его браузеру, то браузер его не имеет.

Если вы это сделаете, то это (или просто последующая ссылка на него) является частью источника.

Ответ 3

Использовать Html Encrypter. Часть головы, которая имеет

<link rel="stylesheet" href="styles/css.css" type="text/css" media="screen" />
<script type="text/javascript" src="script/js.js" language="javascript"></script>

copy and paste it to HTML Encrypter and the Result will goes like this
and paste it the location where you cut the above sample

<Script Language='Javascript'>
<!-- HTML Encryption provided by iWEBTOOL.com -->
<!--
document.write(unescape('%3C%6C%69%6E%6B%20%72%65%6C%3D%22%73%74%79%6C%65%73%68%65%65%74%22%20%68%72%65%66%3D%22%73%74%79%6C%65%73%2F%63%73%73%2E%63%73%73%22%20%74%79%70%65%3D%22%74%65%78%74%2F%63%73%73%22%20%6D%65%64%69%61%3D%22%73%63%72%65%65%6E%22%20%2F%3E%0A%3C%73%63%72%69%70%74%20%74%79%70%65%3D%22%74%65%78%74%2F%6A%61%76%61%73%63%72%69%70%74%22%20%73%72%63%3D%22%73%63%72%69%70%74%2F%6A%73%2E%6A%73%22%20%6C%61%6E%67%75%61%67%65%3D%22%6A%61%76%61%73%63%72%69%70%74%22%3E%3C%2F%73%63%72%69%70%74%3E%0A'));
//-->

HTML ENCRYPTER Примечание. Если у вас есть java script на вашей странице, попробуйте экспортировать в .js файл и сделать это как пример выше.

И также этот Encrypter не всегда работает в некотором коде, который заставит сайт ur запутаться... Выберите лучшую часть, которую вы хотите скрыть, например, в <form> </form>

Это может быть наоборот от пользователя, но не всех нубов, как я, это знает.

Надеюсь, это поможет

Ответ 4

Мое решение вдохновлено последним комментарием. Это код invisible.html

<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script type="text/javascript" src="invisible_debut.js" ></script>
<body>
</body>

Открытый код invisible_debut.js:

$(document).ready(function () {
var ga = document.createElement("script"); //ga is to remember Google Analytics ;-)
ga.type = 'text/javascript';
ga.src = 'invisible.js';
ga.id = 'invisible';
document.body.appendChild(ga);
$('#invisible').remove();});

Обратите внимание, что в конце я удаляю созданный script. invisible.js:

$(document).ready(function(){
    alert('try to find in the source the js script which did this alert!');
    document.write('It disappeared, my dear!');});

invisible.js не отображается в консоли, потому что он был удален и никогда не был в исходном коде, потому что создан javascript.

Что касается invisible_debut.js, я обфускал его, а это значит, что очень сложно найти url invisible.js. Не идеально, но достаточно сложно для обычного хакера.

Ответ 5

"Невозможно!"

О да, это....

//------------------------------
function unloadJS(scriptName) {
  var head = document.getElementsByTagName('head').item(0);
  var js = document.getElementById(scriptName);
  js.parentNode.removeChild(js);
}


//----------------------
function unloadAllJS() {
  var jsArray = new Array();
  jsArray = document.getElementsByTagName('script');
  for (i = 0; i < jsArray.length; i++){
    if (jsArray[i].id){
      unloadJS(jsArray[i].id)
    }else{
      jsArray[i].parentNode.removeChild(jsArray[i]);
    }
  }      
}

Ответ 6

Я не уверен, что есть способ скрыть эту информацию. Независимо от того, что вы делаете, чтобы запутать или скрыть все, что вы делаете в JavaScript, все равно приходит к тому, что вашему браузеру необходимо загрузить его, чтобы использовать его. У современных браузеров есть инструменты для отладки/анализа веб-страниц, которые делают извлечение и просмотр скриптов тривиальными (например, нажмите F12 в Chrome).

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

Ответ 7

Вы можете использовать document.write.

Без jQuery

<!DOCTYPE html>
<html>
<head><meta charset=utf-8></head>
<body onload="document.write('<!doctype html><html><head><meta charset=utf-8></head><body><p>You cannot find this in the page source. (Your page needs to be in this document.write argument.)</p></body></html>');">
</body></html>

Или с помощью jQuery

$(function () {
  document.write("<!doctype html><html><head><meta charset=utf-8></head><body><p>You cannot find this in the page source. (Your page needs to be in this document.write argument.)</p></body></html>")
});

Ответ 8

Я думаю, что нашел решение скрыть некоторые JavaScript-коды в источнике просмотра браузера. Но для этого вам нужно использовать jQuery.

Например:

В вашем index.php

<head>
<script language = 'javascript' src = 'jquery.js'></script>
<script language = 'javascript' src = 'js.js'></script>
</head>

<body>
<a href = "javascript:void(null)" onclick = "loaddiv()">Click me.</a>

<div id = "content">
</div>

</body>

Вы загружаете файл в тело html/php, вызванное функцией jquery в файле js.js.

js.js

function loaddiv()
{$('#content').load('content.php');}

Вот трюк.

В вашем файле content.php поместите другой тег заголовка, затем откройте другой файл js.

content.php

<head>
<script language = 'javascript' src = 'js2.js'></script>
</head>

<a href = "javascript:void(null)" onclick = "loaddiv2()">Click me too.</a>

<div id = "content2">
</div>

в файле js2.js создайте любую функцию, которую вы хотите.

Пример:

js2.js

function loaddiv2()
{$('#content2').load('content2.php');}

content2.php

<?php
echo "Test 2";
?>

Пожалуйста, следуйте ссылке, затем скопируйте ее в имя файла jquery.js

http://dl.dropbox.com/u/36557803/jquery.js

Надеюсь, это поможет.

Ответ 9

Невозможно!

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