Можно ли скрыть код Javascript из html веб-страницы, когда исходный код просматривается через функцию просмотра исходного кода в браузерах?
Я знаю, что код можно скрыть, но я бы предпочел, чтобы он был скрыт от функции исходного кода.
javascript
browser
hide
obfuscation
Арун Наир
источник
источник
Ответы:
Я не уверен, что кто-то еще действительно адресовал ваш вопрос напрямую, который представляет собой код, просматриваемый с помощью команды просмотра исходного кода браузера.
Как уже говорили другие, нет способа защитить javascript, предназначенный для запуска в браузере, от определенного зрителя. Если браузер может его запустить, то любой решительный человек может его просмотреть / запустить.
Но если вы поместите свой javascript во внешний файл javascript, который включен в:
<script type="text/javascript" src="http://mydomain.com/xxxx.js"></script>
теги, то код javascript не будет сразу виден с помощью команды View Source - таким образом будет виден только сам тег script. Это не означает, что кто-то не может просто загрузить этот внешний файл javascript, чтобы увидеть его, но вы спросили, как уберечь его от команды просмотра исходного кода браузера, и это сделает это.
Если вы действительно хотите усложнить просмотр исходного кода, вы должны сделать все следующее:
С учетом всего сказанного, я думаю, вам следует сосредоточиться на производительности, надежности и улучшении своего приложения. Если вам абсолютно необходимо защитить какой-то алгоритм, поместите его на сервер, но в остальном соревнуйтесь за то, чтобы быть лучшим в своих силах, а не за наличие секретов. В конечном итоге именно так в Интернете работает успех.
источник
<script>
будет держать его из View Source лучше (еще видны под живой DOM) - то есть, он не может быть просто «право нажал на» в Source View. Возможно, указанный<script>
элемент будет удален после выполнения JavaScript, что сделает его немного более громоздким (но не невозможным), чтобы получить исходный код ... конечно, сетевой трафик будет очень легко отображаться в Firebug или аналогичном ;-)Нет, это невозможно.
Если вы не передадите его браузеру, значит, в браузере его нет.
Если да, то он (или легко читаемая ссылка на него) составляет часть источника.
источник
Мое решение основано на последнем комментарии. Это код 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();});
Обратите внимание, что в конце я удаляю созданный скрипт. 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. Не идеально, но достаточно сложно для нормального хакера.
источник
invisible.js
в источниках. Версия Chrome 34.0.1847.131 мUse 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-скрипт на вашей странице, попробуйте экспортировать его в файл .js и сделать его как в примере выше.
И также этот шифровальщик не всегда работает в каком-то коде, который может испортить ваш веб-сайт ... Выберите лучшую часть, которую вы хотите скрыть, например, в
<form> </form>
Это может быть изменено опытным пользователем, но не все новички, как я, знают это.
Надеюсь, это поможет
источник
Я не уверен, что есть способ скрыть эту информацию. Независимо от того, что вы делаете, чтобы запутать или скрыть то, что вы делаете в 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]); } } }
источник
Думаю, я нашел решение, позволяющее скрыть определенные коды 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
Надеюсь, это поможет.
источник
Вы могли бы использовать
document.write
.Без jQuery
Или с 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 или минимизировать ваш javascript, что затрудняет обратное проектирование для конечного пользователя. однако это не невозможно реконструировать.
источник
Подход, который я использовал несколько лет назад -
Нам нужен файл jsp, файл java сервлета и файл java фильтра.
Предоставьте пользователю доступ к файлу jsp. URL-адрес типа пользователя для файла jsp.
Случай 1 -
Используя Printwriter, он отобразит ответ пользователю.
Тем временем сервлет создаст ключевой файл.
Когда сервлет пытается выполнить файл xxxx.js в нем, фильтр
активируется и обнаруживает, что файл ключа существует, и, следовательно, удаляет
файл ключа .
Таким образом, один цикл закончился.
Короче говоря, ключевой файл будет создан сервером и немедленно удален фильтром.
Это будет происходить при каждом ударе.
Случай 2 -
Вместо создания файла можно использовать значение настройки в переменной сеанса.
источник