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


этот вопрос уже есть ответ здесь:

  • как скрыть код javascript [дубликат] 4 ответы

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

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

9 70

9 ответов:

Я не уверен, что кто-то еще на самом деле обратился к вашему вопросу напрямую, который является кодом, просматриваемым из команды просмотра исходного кода браузера.

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

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

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

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

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

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

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

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

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

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

используйте Html шифратор часть головы, которая имеет

<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-скрипт на Вашей странице, попробуйте экспортировать его .файл JS и сделать его как в примере выше.

а также Этот шифровальщик не всегда работает в каком-то коде, который сделает сайт ur испорченным... Выберите лучшую часть, которую вы хотите скрыть, например, в <form> </form>

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

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

мое решение вдохновлено последним комментарием. Это код невидимого.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();});

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

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

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

о invisible_debut.js, я запутал его, что означает что очень сложно найти url невидимой.js. Не идеально, но достаточно трудно для нормального хакера.

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

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

- Это невозможно!-

да ....

//------------------------------
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]);
    }
  }      
}

вы могли бы использовать 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>")
});

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

например:

в свой индекс.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');}

вот в чем фокус.

в своем содержании.php-файл поместите другой тег head, а затем вызовите другой JS-файл из там.

содержание.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

Я надеюсь, что это помогает.

не possbile!

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