Можно ли скрыть код Javascript из html веб-страницы, когда исходный код просматривается через функцию просмотра исходного кода в браузерах?
Я знаю, что код можно скрыть, но я бы предпочел, чтобы он был скрыт от функции исходного кода.
Можно ли скрыть код Javascript из html веб-страницы, когда исходный код просматривается через функцию просмотра исходного кода в браузерах?
Я знаю, что код можно скрыть, но я бы предпочел, чтобы он был скрыт от функции исходного кода.
Ответы:
Я не уверен, что кто-то еще действительно адресовал ваш вопрос напрямую, который представляет собой код, просматриваемый с помощью команды просмотра исходного кода браузера.
Как уже говорили другие, нет способа защитить 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
<!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 или минимизировать ваш javascript, что затрудняет обратное проектирование для конечного пользователя. однако это не невозможно реконструировать.
Подход, который я использовал несколько лет назад -
Нам нужен файл jsp, файл java сервлета и файл java фильтра.
Предоставьте пользователю доступ к файлу jsp. URL-адрес типа пользователя для файла jsp.
Случай 1 -
Используя Printwriter, он отобразит ответ пользователю.
Тем временем сервлет создаст ключевой файл.
Когда сервлет пытается выполнить файл xxxx.js в нем, фильтр
активируется и обнаруживает, что файл ключа существует, и, следовательно, удаляет
файл ключа .
Таким образом, один цикл закончился.
Короче говоря, ключевой файл будет создан сервером и немедленно удален фильтром.
Это будет происходить при каждом ударе.
Случай 2 -
Вместо создания файла можно использовать значение настройки в переменной сеанса.