Как скрыть код javascript на веб-странице? [дубликат]
этот вопрос уже есть ответ здесь:
- как скрыть код javascript [дубликат] 4 ответы
можно ли скрыть код Javascript из html веб-страницы, когда исходный код просматривается через функцию просмотра исходного кода браузерами?
Я знаю, что можно обфусцировать код, но я бы предпочел его быть скрытый из функции просмотра источника.
9 ответов:
Я не уверен, что кто-то еще на самом деле обратился к вашему вопросу напрямую, который является кодом, просматриваемым из команды просмотра исходного кода браузера.
Как уже говорили другие, нет никакого способа защитить javascript, предназначенный для запуска в браузере от определенного средства просмотра. Если браузер может запустить его, то любой определенный человек может просмотреть/запустить его также.
но, если вы поместите свой javascript во внешний файл javascript, который входит в состав:
<script type="text/javascript" src="http://mydomain.com/xxxx.js"></script>
теги, тогда код javascript не будет сразу виден с помощью команды View Source - только сам тег сценария будет виден таким образом. Это не означает, что кто-то не может просто загрузить этот внешний файл javascript, чтобы увидеть его, но вы спросили, как сохранить его из команды просмотра исходного кода браузера, и это сделает это.
Если бы вы действительно хотели сделать больше работы для просмотра источника, вы бы сделали все следующее:
- положите его в внешний.js файл.
- запутать файл, чтобы большинство имен собственных переменных были заменены короткими версиями, чтобы все ненужные пробелы были удалены, поэтому его нельзя прочитать без дальнейшей обработки и т. д...
- динамически включать .JS-файл, программно добавляя теги сценариев (например, Google Analytics). Это еще больше затруднит доступ к исходному коду из команды View Source, так как не будет простой ссылки для нажатия там.
- Поместите как можно больше интересной логики, которую вы хотите защитить на сервере, который вы получаете через 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
Я надеюсь, что это помогает.