browsers - javascript disable developer tools




¿Cómo deshabilitar las herramientas de desarrollo del navegador? (6)

Actualmente estoy desarrollando una aplicación web y dado que tiene acceso a una base de datos debajo, necesito la capacidad de desactivar las herramientas de desarrollador de Safari, Chrome, Firefox e Internet Explorer y Firebug en Firefox y todas las aplicaciones similares. ¿Hay alguna forma de hacer esto?

Nota: El marco AJAX provisto por la base de datos requiere que cualquier cosa dada a la base de datos esté en parámetros web que puedan ser modificados y que cualquier cosa que regrese se maneje en JavaScript. Por lo tanto, cuando devuelve un valor como si un usuario tiene acceso o no a una determinada parte del sitio web, debe manejarse en JavaScript, que las herramientas de desarrollador pueden acceder de todos modos. Entonces esto es requerido.

ACTUALIZACIÓN: Para aquellos de ustedes que aún piensan que estoy haciendo suposiciones erróneas, pregunté al proveedor. Debajo está su respuesta:

Aquí hay algunas sugerencias para formas de mitigar el riesgo:

1) Use un Obfuscator de JavaScript para ocultar el código y solo proporcione la versión ofuscada con la aplicación vendida; Guarde la versión no ofuscada para usted mismo para hacer ediciones. Aquí hay un ofuscador en línea: ¿cómo puedo ofuscar (proteger) JavaScript? http://en.wikipedia.org/wiki/Obfuscated_code http://javascriptobfuscator.com/default.aspx

2) Use un nombre menos descriptivo; tal vez 'repeatedtasks.js' en lugar de 'security.js' como 'security.js' probablemente se destaque más para cualquiera que vea este tipo de información como algo importante.


Actualización en el momento (2015) cuando se publicó esta respuesta, este truco fue posible. Ahora (2017) los navegadores son maduros. ¡El siguiente truco ya no funciona!

Sí, es posible. Chrome ajusta todo el código de la consola en

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

... por lo que el sitio redefine console._commandLineAPI para lanzar:

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

Este es el truco principal!


Brandon,

Puedes hacer algo como esto, esta es una idea muy básica, puedes anular el código nativo haciendo esto, esto no es exactamente lo que estás buscando, has desarrollado a partir de esto

delete window.console

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

No hay forma de que su entorno de desarrollo sea este cerebro muerto. Simplemente no puede ser.

Recomiendo enviar un correo electrónico a su jefe con:

  • Una demanda de una semana o dos en el cronograma de capacitación / aprendizaje.
  • Una demanda de tickets de soporte suficientes con su proveedor para averiguar cómo realizar la validación del lado del servidor.
  • Una advertencia clara de que si la herramienta no puede hacer la validación del lado del servidor, se burlará de ella en la página principal del Wall Street Journal cuando se filtre / destruya toda la base de datos, etc.

No te olvides de herramientas como Fiddler . Incluso si bloquea todas las consolas de los navegadores, las solicitudes http pueden modificarse en el cliente, incluso si usa HTTPS. Fiddler puede capturar solicitudes del navegador, el usuario puede modificarlo y volver a jugar con entradas maliciosas. A menos que asegures tus solicitudes AJAX, pero no conozco un método para hacerlo.

Simplemente no confíes en ninguna entrada que recibas desde cualquier navegador.


No. No es posible deshabilitar las herramientas de desarrollador para sus usuarios finales.

Si su aplicación es insegura si el usuario tiene acceso a herramientas de desarrollo, entonces es simplemente inseguro.








javascript