Ответ 1
Если производительность вашего сайта страдает, когда включен Firebug, вы можете захотеть отобразить предупреждение, предлагая пользователям отключить его. Вы можете легко обнаружить, включен ли Firebug через JavaScript.
Есть ли способ заставить Firebug вообще не работать на веб-сайте?
Если производительность вашего сайта страдает, когда включен Firebug, вы можете захотеть отобразить предупреждение, предлагая пользователям отключить его. Вы можете легко обнаружить, включен ли Firebug через JavaScript.
ПРЕДУПРЕЖДЕНИЕ: ЭКСТРЕМАЛЬНОЕ ЗЛО. НИКОГДА НЕ ИСПОЛЬЗУЙТЕ ЭТОТ КОД. Кроме того, это не остановит кого-то, кто находчив.
setTimeout(checkForFirebug, 100);
function checkForFirebug()
{
if (window.console && window.console.firebug) {
while(true); //Firebug is enabled
}
setTimeout(checkForFirebug, 100);
}
РЕДАКТИРОВАТЬ: Я решил, что я дам ответ на реальный вопрос, стоящий за вопросом. Дело в том, что Javascript является интерпретированным языком и что интерпретатор находится в браузере. Это делает невозможным предоставление Javascript, который является безопасным и управляемым. То же самое касается HTML и CSS. Лучшее, что вы можете сделать, это минимизировать Javascript, чтобы сделать его немного менее простым для повторного использования. Если компания, о которой идет речь, действительно хочет "безопасный" Javascript, вам просто нужно сказать им, что это действительно невозможно.
Эммм.... Что делает использование Firefox (с Firebug или без него)?
Я использую IE, и я могу так же легко просматривать ваш JavaScript. Аналогично с Google Chrome. Черт, я могу загрузить ваш JavaScript при просмотре вашей веб-страницы на моем Palm Treo.
Все, что можно получить непосредственно из браузера, можно загрузить и проанализировать на досуге. Как говорили другие (лучше, чем я), JavaScript, который работает на вашем сайте, должен считаться "открытым исходным кодом". Найдите другой способ сделать это (т.е. Обрабатывать на своем сервере) или принять, что кто-то взломает и посмотрит на него.
Помните, что ваши подпрограммы настолько очевидны (с точки зрения того, что они делают с вашими веб-страницами), что пользователь пойдет на ваш сайт и сразу скажет: "Эй, это круто, мне интересно, как они это делают?" Если нет, не беспокойтесь об этом - большинство людей не будут достаточно заинтересованы, чтобы попытаться посмотреть ваш JavaScript.
Вы можете попробовать уменьшить свой JavaScript, но это не 100% собирается остановить кого-то, кто решил. Вы можете попробовать зашифровать его, но я никогда не пробовал. Или поместите уведомление об авторских правах в свои файлы JavaScript, так что, по крайней мере, кто-то еще не сможет впоследствии отменить вашу работу как вашу, не попав в юридическую проблему.
Нет. В любом случае, никто не хочет, чтобы ваши javascript-подпрограммы.: -)
И если вы беспокоитесь о небезопасном коде, вы должны переписать свой сайт для защиты, а не пытаться скрыть свои проблемы.
Если вы хотите скрыть свой HTML/CSS/JavaScript от посетителей, это невозможно. Даже если вы не можете использовать Firebug, можно просто просмотреть исходный код HTML. Любые внешние JavaScripts и таблицы стилей могут быть загружены в виде файлов обычного текста. Поскольку HTML, CSS и JavaScript являются технологиями на стороне клиента, которые загружаются как обычный текст и интерпретируются веб-браузером, теоретически невозможно скрыть свой код. Лучшее, что вы можете сделать, чтобы сделать код труднее понять, - это запутать его. См. Wikipedia.
Вы можете нажать кнопку Off
, чтобы отключить ее.
Или вы пытаетесь запретить пользователям запускать его? Если да, удачи...
"Мои подпрограммы javascript" принадлежат компании, в которой я работаю, и моя компания хочет, чтобы материал, который мы разрабатываем, был обеспечен.
Вы не защищаете вещи, слегка поглаживая "хакеров" на пальцах, когда они используют один специальный инструмент для отладки. Попытайтесь помешать им использовать конечный инструмент хакера: "Просмотреть источник".
Если это там, там. "Безопасный" означает что-то другое в этом контексте. Это означает обеспечение любых важных данных, которые вы используете, используя методы, которые непроницаемы * даже при полном знании исходного кода. Сам исходный код не защищен, и он также не должен быть.
*) "непроницаемый" = достаточно сложно подорвать в разумные сроки, ничего не составляет 100%:)
Все, что вы отправляете клиенту, весь ваш javascript, открыт для всех, кому вы его отправляете. У вас нет ничего, что бы вы не хотели видеть. Невозможно запретить кому-то другому браузеру использовать Firebug или множество других инструментов для анализа вашего кода. Вы можете попытаться сделать ваш html, css и javascript действительно плохим, и это может замедлить их! Существуют программы обфускации, которые затрудняют чтение. Если вы хотите скрыть функциональность, вам нужно, чтобы это произошло на сервере.
Вы можете создать свой сайт во Flash, Silverlight или Java. Затем Firebug будет ограничен отображением вашего базового HTML.
Я предполагаю, что вы беспокоитесь об обратном проектировании с FireBug.
Нет, конечно нет. Если Firebug показывает что-то, что вы должны запретить видеть пользователям, значит, вы совершенно ошибаетесь в этой проблеме. Я не пытаюсь быть грубым или унизительным, но попытка заблокировать одну конкретную программу в попытке исправить ошибку в вашем веб-приложении примерно так же логична, как ведро с паром. Firebug не делает ничего волшебного; Я могу сделать все, что угодно, написав код. Сказав это, должна быть основная проблема, над которой вам следует больше беспокоиться.
Просто для того, чтобы дать небольшой трюк, который я использую, помогает людям, которые видят ваш код,
Один из трюков, которые я делаю, не мешает JavaScript быть найденным опытным разработчиком или хакером, но сдерживает тех, кто играет с Firebug/inspector,
используйте jQuery или другую библиотеку с селектором решетки
второй порт вызова - это все файлы, которые вы поместили в файл загрузчика E.G
Loader.js
(function($){
function loader(type, addr){
var head = $("head")[0];
switch(type){
case "script":{
var element = $(document.createElement("script"));
element.attr("type", "text/javascript");
element.attr("src", addr);
element.attr("loaded", "loader")
$(head).append(element);
}
case "style":{
var element = $(document.createElement("link"));
element.attr("rel", "stylesheet");
element.attr("type", "text/css");
element.attr("loaded", "loader");
element.attr("href", addr);
$(head).append(element);
}
}
}
loader("css", "path/to/your.css");
loader("script", "path/to/script.js");
loader("script", "unloader.js")
})(jQuery);
Итак, чтобы начать с использования закрытия, это не позволяет кому-либо использовать консольный ввод инспектора, чтобы увидеть код, который был запущен.
поэтому, как только этот файл будет передан, он загрузит ваши CSS и JS, но вы все равно увидите, что они загружены в элемент заголовка вашего инспектора, благодаря браузерам и тем, как они работают, вы можете удалить и не выгружать их, это означает код не будет удален из выполнения, но будет препятствовать их отображению в инспекторе, это то, что происходит в разгрузке.
unloader.js
(function($){
$("head *[loaded=loader]").remove();
})(jQuery);
Вышеуказанные действия удаляют файлы, загруженные через загрузчик.
Единственное, что вам нужно запомнить, - добавить loaded="loader"
к вашему скрипту, который включает загрузчика, теперь это не делает невозможным просмотр некоторых ваших файлов, но не позволяет инспектору показывать их в HTML,
пути вокруг этого могут быть в коде "Просмотр исходного кода", см. файл загрузчика, и прочитайте это, поэтому убедитесь, что вы минимизируете код. Я использую компилятор Google Closure (http://closure-compiler.appspot.com/home)
даже это не останавливает их, это просто усложняет ситуацию. один из шагов, которые я протестировал, но не использую, находится на загрузчике, и файлы, в которые загружается, используют правило .HTAccess, чтобы проверить, что у них есть ссылка на вашем сайте, это предотвратит их просмотр непосредственно в ваших js/css файлах кода.
другой совет не хранит их в обычных местах и не использует общие имена E.G скрипты в /scripts/CSS в/style/или style.css
Вот пример загрузчика Closure Compiled, затем Obfuscated
Loader.js
var _0xc596=["\x68\x65\x61\x64","\x73\x63\x72\x69\x70\x74","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x74\x79\x70\x65","\x74\x65\x78\x74\x2F\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74","\x61\x74\x74\x72","\x73\x72\x63","\x6C\x6F\x61\x64\x65\x64","\x6C\x6F\x61\x64\x65\x72","\x61\x70\x70\x65\x6E\x64","\x6C\x69\x6E\x6B","\x72\x65\x6C","\x73\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x74\x65\x78\x74\x2F\x63\x73\x73","\x68\x72\x65\x66","\x73\x74\x79\x6C\x65","\x63\x73\x73","\x70\x61\x74\x68\x2F\x74\x6F\x2F\x79\x6F\x75\x72\x2E\x63\x73\x73","\x70\x61\x74\x68\x2F\x74\x6F\x2F\x73\x63\x72\x69\x70\x74\x2E\x6A\x73","\x75\x6E\x6C\x6F\x61\x64\x65\x72\x2E\x6A\x73"];(function (_0x76e5x1){function _0x76e5x2(_0x76e5x2,_0x76e5x3){var _0x76e5x4=_0x76e5x1(_0xc596[0])[0];switch(_0x76e5x2){case _0xc596[1]:var _0x76e5x5=_0x76e5x1(document[_0xc596[2]](_0xc596[1]));_0x76e5x5[_0xc596[5]](_0xc596[3],_0xc596[4]);_0x76e5x5[_0xc596[5]](_0xc596[6],_0x76e5x3);_0x76e5x5[_0xc596[5]](_0xc596[7],_0xc596[8]);_0x76e5x1(_0x76e5x4)[_0xc596[9]](_0x76e5x5);;case _0xc596[15]:_0x76e5x5=_0x76e5x1(document[_0xc596[2]](_0xc596[10]));_0x76e5x5[_0xc596[5]](_0xc596[11],_0xc596[12]);_0x76e5x5[_0xc596[5]](_0xc596[3],_0xc596[13]);_0x76e5x5[_0xc596[5]](_0xc596[7],_0xc596[8]);_0x76e5x5[_0xc596[5]](_0xc596[14],_0x76e5x3);_0x76e5x1(_0x76e5x4)[_0xc596[9]](_0x76e5x5);;} ;} ;_0x76e5x2(_0xc596[16],_0xc596[17]);_0x76e5x2(_0xc596[1],_0xc596[18]);_0x76e5x2(_0xc596[1],_0xc596[19]);} )(jQuery);
unloader.js
var _0xc2fb=["\x72\x65\x6D\x6F\x76\x65","\x68\x65\x61\x64\x20\x2A\x5B\x6C\x6F\x61\x64\x65\x64\x3D\x6C\x6F\x61\x64\x65\x72\x5D"];(function (_0x3db3x1){_0x3db3x1(_0xc2fb[1])[_0xc2fb[0]]();} )(jQuery);
чтобы воспроизвести: http://closure-compiler.appspot.com/home вставить свой код под//ДОБАВИТЬ ВАШ КОД ЗДЕСЬ
Затем результат, который возвращается обратно: http://www.javascriptobfuscator.com/Default.aspx, чтобы сделать его еще более нечитаемым.
Надеюсь, это поможет любому, кто хочет сделать JS максимально безопасным
Но, пожалуйста, помните, как каждый сказал, что это не остановит про-хакеров, просто очень трудно читать и понимать
Нет...............
В конечном счете, нет, поскольку браузер (в данном случае firefox) на своей машине может выбрать запуск любого javascript (такого как firebug), который он хочет. Вы не можете запретить пользователям запускать его вместе с вашим сайтом.
если вы хотите защитить свой код, вы можете попробовать шифровать исходный код javascript
Моя репутация слишком низкая, чтобы комментировать, но я просто хотел указать на то, что я заметил, узнав о window.history.pushState(); кажется, что вы можете изменить то, что сейчас находится в адресной строке, и как только вы это сделаете, "просмотр источника страницы" не работает. Поэтому, если бы был способ заблокировать инструменты разработчика, я бы не знал, как просматривать исходный код.
EDIT: после использования window.history.pushState(), когда я просматриваю инструменты разработчика, он говорит мне перезагрузить страницу, чтобы посмотреть, что находится в файле javascript (но затем он показывает адрес в файле JS, поэтому это не очень помогает)