Как отключить инструменты разработчика браузера?

Я занимаюсь разработкой веб-приложения, и, поскольку оно имеет доступ к базе данных внизу, мне требуется возможность отключить инструменты разработчика из 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", вероятно, больше будет выделяться тем, кто рассматривает информацию такого типа как нечто важное.

Ответ 1

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

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

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

Ответ 2

Если ваша инфраструктура требует, чтобы вы выполняли авторизацию на клиенте, тогда...

Вам нужно изменить фреймворк

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

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

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

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

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

Ответ 6

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

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

Ответ 7

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

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

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

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

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

Это основной трюк!

Ответ 9

Если вы используете ответ, то удалите все файлы .map файлы /js и /css из созданной вами сборки.

Ответ 10

Брэндон,

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

delete window.console

console.log('test'); // Noting will work