Как отключить инструменты разработчика браузера? - PullRequest
58 голосов
/ 26 сентября 2011

Я занимаюсь разработкой веб-приложения, и, поскольку оно имеет доступ к базе данных внизу, мне требуется возможность отключить инструменты разработчика из Safari, Chrome, Firefox и Internet Explorer, а также Firebug в Firefox и всех подобных приложений. Есть ли способ сделать это?

Примечание. Платформа AJAX, предоставляемая базой данных, требует, чтобы все, что предоставляется базе данных, содержало веб-параметры, которые можно было изменять, и чтобы все, что она возвращает, обрабатывалось в JavaScript. Поэтому, когда он возвращает значение, например, имеет ли пользователь доступ к определенной части веб-сайта, оно должно обрабатываться в JavaScript, к которому инструменты разработчика могут в любом случае получить доступ. Так что это требуется.

ОБНОВЛЕНИЕ: Для тех из вас, кто все еще думает, что я делаю неверные предположения, я спросил продавца. Ниже их ответ:

Вот несколько предложений о способах снижения риска:

1) Используйте JavaScript-обфускатор, чтобы запутать код и предоставить только запутанная версия с проданным приложением; держать не Запутанная версия для себя, чтобы сделать правки. Вот онлайн обфускатор: Как я могу скрыть (защитить) JavaScript? http://en.wikipedia.org/wiki/Obfuscated_code http://javascriptobfuscator.com/default.aspx

2) Используйте менее описательное имя; может быть, 'repeattasks.js' вместо «security.js» как «security.js», вероятно, будет выделяться больше для всех просматривая информацию такого типа как нечто важное.

Ответы [ 9 ]

90 голосов
/ 26 сентября 2011

Нет, вы не можете сделать это .

Меню разработчика находится на стороне клиента и предоставляется браузером пользователя.

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

50 голосов
/ 27 сентября 2011

Если ваша структура требует авторизации на клиенте, то ...

Вам необходимо изменить свою структуру

Когда вы помещаете приложение в дикую природу, где пользователи, которым вы не доверяете, могут получить к нему доступ;Вы должны нарисовать линию на песке.

  • Физическое оборудование, которым вы владеете;и может запереть за сильной дверью. Вы можете делать здесь все что угодно;Это отличное место для хранения вашей базы данных и выполнения функций авторизации, чтобы решить, кто может что-то делать с вашей базой данных.
  • Все остальное; Включение браузеров наклиентские компьютеры;мобильные телефоны;Удобные киоски расположены в холле вашего офиса. Вы не можете доверять этим!Ever! Вы ничего не можете сделать, это означает, что вы можете быть полностью уверены, что эти машины не лгут, чтобы обмануть вас и ваших клиентов без денег.Вы не контролируете это, поэтому вы не можете надеяться узнать, что происходит.
23 голосов
/ 11 февраля 2014

На самом деле это как-то возможно ( how-do-facebook-disable-developer-tools ), но это ужасно плохая идея для защиты ваших данных. Атакующий всегда может использовать другие (открытые, самостоятельно написанные) движки, которые вы не можете контролировать. Даже обфускация javascript может лишь немного замедлить взлом вашего приложения, но также практически не обеспечивает безопасности.

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

19 голосов
/ 27 сентября 2011

Ваша среда разработки не может быть этой безмозглой.Этого просто не может быть.

Я настоятельно рекомендую написать вашему боссу по электронной почте:

  • Требование на неделю или две в расписании обучения / обучения.
  • Требование достаточного количества билетов в службу поддержки у вашего поставщика, чтобы выяснить, как выполнить проверку на стороне сервера.
  • Четкое предупреждение о том, что если инструмент не может выполнить проверку на стороне сервера, вы будете высмеивать на первой странице Wall Street Journal, когда вся ваша база данных просочилась / уничтожена / и т. д.
16 голосов
/ 26 сентября 2011

Нет.Невозможно отключить Инструменты разработчика для ваших конечных пользователей.

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

11 голосов
/ 12 февраля 2014

Не забывайте о таких инструментах, как Fiddler .Если даже если вы заблокируете все консоли браузера, запросы HTTP могут быть изменены на клиенте, даже если вы используете HTTPS.Fiddler может захватывать запросы из браузера, пользователь может изменять его и воспроизводить со злонамеренным вводом.Если вы не защищаете свои запросы AJAX, но я не знаю, как это сделать.

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

1 голос
/ 12 августа 2015

Обновление в то время (2015), когда этот ответ был опубликован, этот трюк был возможен.Сейчас (2017) браузеры уже зрелые. Следующий трюк больше не работает!

Да, это возможно.Chrome оборачивает весь консольный код в

with ((console && console._commandLineAPI) || {}) {
  <code goes here>
}

... поэтому сайт переопределяет console._commandLineAPI для выдачи:

Object.defineProperty(console, '_commandLineAPI',
   { get : function() { throw 'Nooo!' } })

Это главный трюк!

0 голосов
/ 25 февраля 2014

Вы можете легко отключить инструменты разработчика, определив это:

Object.defineProperty(console, '_commandLineAPI', { get : function() { throw 'Nooo!' } })

Нашли его здесь: Как Facebook отключает встроенные в браузер инструменты разработчика?

0 голосов
/ 12 февраля 2014

Брэндон,

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

delete window.console

console.log('test'); // Noting will work
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...