javascript - disable - ¿Cómo deshabilitar las herramientas de desarrollo del navegador?
disable javascript console in browsers (9)
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!
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.
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
De hecho, esto es de alguna manera posible ( how-does-facebook-disable-developer-tools ), pero esta es una idea terriblemente mala para proteger sus datos. El atacante siempre puede usar otros motores (abiertos, escritos por sí mismos) sobre los que no tiene ningún control. Incluso la ofuscación de JavaScript puede ralentizar un poco el crackeo de su aplicación, pero también prácticamente no ofrece seguridad.
La única forma razonable de proteger sus datos es escribir un código seguro en el servidor. Y recuerde, si permite que alguien descargue algunos datos, puede hacer lo que quiera con él.
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 puedes hacer esto .
El menú del desarrollador está en el lado del cliente y lo proporciona el navegador del usuario.
Además, el desarrollador del navegador no debería tener nada que ver con el código de la base de datos del lado del servidor, y si lo hace, necesita una reestructuración maaaaajor.
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.
Puede deshabilitar fácilmente las herramientas de desarrollador definiendo esto:
Object.defineProperty(console, ''_commandLineAPI'', { get : function() { throw ''Nooo!'' } })
Lo he encontrado aquí: ¿Cómo deshabilita Facebook las herramientas de desarrollo integradas del navegador?
Si su marco requiere que haga una autorización en el cliente, entonces ...
Debes cambiar tu marco
Cuando coloca una aplicación en libertad, los usuarios en los que no confía pueden acceder; debes trazar una línea en la arena.
- Hardware físico que posee; y puede cerrarse detrás de una puerta fuerte. Puedes hacer lo que quieras aquí; este es un gran lugar para guardar su base de datos y para realizar las funciones de autorización para decidir quién puede hacer qué con su base de datos.
- Todo lo demas; Incluyendo navegadores en computadoras cliente; teléfonos móviles; Quioscos de conveniencia ubicados en el lobby de su oficina. ¡No puedes confiar en esto! ¡Nunca! No hay nada que puedas hacer, lo que significa que puedes estar totalmente seguro de que estas máquinas no mienten para engañarte a ti y a tus clientes sin dinero. No lo controlas, así que no puedes esperar saber qué está pasando.