2010-05-20 16 views

Respuesta

15

Si el rendimiento de su sitio web sufre cuando Firebug está habilitado, es posible que desee mostrar una advertencia solicitando a los usuarios que lo desactiven. You can easily detect if Firebug is enabled through JavaScript.

+5

+1 Eso es lo que hace Gmail. –

+2

+1, esto es probablemente todo lo que su sitio puede hacer. Además, podría tratar de registrar qué usuarios lo tienen habilitado, si eso hará que su página se ejecute lentamente, etc. Por lo menos, si se quejan, puede decir: "bueno, si apagó Firebug como le pedimos". .. " –

6

Puede hacer clic en el botón Off para deshabilitarlo.

¿O está intentando evitar que sus usuarios lo ejecuten? Si es así, buena suerte ...

4

Cualquier cosa que usted envíe al cliente, toda su Javascript, está abierto a todo el que lo envía a. No tengas nada allí que no quieras que la gente vea. No hay forma de evitar que el navegador de otra persona use Firebug o muchas otras herramientas para analizar su código. Podría tratar de hacer que su html, css y javascript sean realmente malos, ¡y eso podría ralentizarlos! Hay programas de ofuscación para dificultar la lectura. Si desea ocultar la funcionalidad, deberá hacer que suceda en el servidor.

+0

Lo adoro y se votará cuando obtengo más votos. – Josh

7

No. Nadie quiere sus rutinas javascript de todos modos. :-)

Y si le preocupa el código no seguro, debe volver a escribir su sitio para que sea seguro en lugar de tratar de ocultar sus problemas.

+4

" Mis rutinas de javascript "pertenecen a la empresa para la que trabajo y mi empresa quiere que las cosas que desarrollamos sean seguras. Sin ánimo de ofenderte, pero tu respuesta es bastante inútil y bastante arrogante. –

+8

@William: dígale a su empresa que si quieren algo "seguro", no deberían ponerlo en una página web pública. –

+0

He sido sincero en mi oferta de una perspectiva útil sobre una búsqueda mal informada de "su empresa", erm, desorientados administradores de aplicaciones y desarrolladores. Pero no se ofende. –

4

Puede desarrollar su sitio en Flash, Silverlight o Java. Firebug se limitará a mostrar tu HTML base.

Supongo que le preocupa la ingeniería inversa con FireBug.

+0

Lamentablemente no puedo hacer eso, necesito que todo sea completamente HTML.Los sitios que desarrollo no me pertenecen a mí, sino a la empresa para la que trabajo, de todos modos, gracias. –

15

ADVERTENCIA: EXTREME EVIL. NUNCA USE NUNCA ESTE CÓDIGO. Además, no detendrá a alguien que sea ingenioso.

setTimeout(checkForFirebug, 100); 
function checkForFirebug() 
{ 
    if (window.console && window.console.firebug) { 
     while(true); //Firebug is enabled 
    } 
    setTimeout(checkForFirebug, 100); 
} 

EDIT: pensé que podría proporcionar una respuesta a la pregunta real detrás de la pregunta. El hecho es que Javascript es un lenguaje interpretado y ese intérprete está en el navegador. Esto hace que sea literalmente imposible proporcionar Javascript que sea seguro y ejecutable. Lo mismo aplica para HTML y CSS. Lo mejor que puedes hacer es minimizar el Javascript para que sea un poco menos fácil de reutilizar. Si la compañía en cuestión realmente quiere un Javascript "seguro", solo tiene que decirles que no es realmente posible.

+4

No sé si hacer + o - este nivel de maldad. –

+0

+1 más excelente. –

+5

La solución fácil para esto es desactivar javascript antes de cargar la página. Esto en realidad no protege su código, pero puede molestar a sus usuarios. Entonces, como la mayoría de las cosas malvadas, también es muy estúpido. –

1

En última instancia, no, ya que el navegador (en este caso, firefox) en su máquina puede elegir ejecutar cualquier javascript (como Firebug) que desee. No puede evitar que los usuarios lo ejecuten junto con su sitio web.

3

No, por supuesto que no. Si Firebug está revelando algo que debe evitar que sus usuarios vean, entonces se está acercando a este problema completamente equivocado. No estoy tratando de ser grosero o degradante, pero intentar bloquear un programa en particular en un esfuerzo por corregir un error en su aplicación web es tan lógico como un cubo de vapor. Firebug no hace nada mágico; Puedo hacer cualquier cosa escribiendo algún código. Una vez dicho esto, debe haber un problema subyacente por el que deba preocuparse más.

+0

Nunca mencioné nada sobre errores, mi pregunta es simple y directa. El problema subyacente es que mi empresa solicitó que cualquier código de JavaScript que desarrollamos esté protegido. –

+2

Pero eso no es posible – Petter

+2

@William Sin ofender, pero luego su compañía necesita tener un mejor control de lo que significa "seguro" en este contexto. – deceze

1

si usted quiere proteger su código, puede probar con la encriptación de su código fuente Javascript

google encrypt javascript source

+1

Tenga en cuenta que la encriptación puede ser rechazada por alguien que pretende ser un navegador (posiblemente usando rinocerontes). –

+0

correcto, solo hará que sea un poco más difícil de encontrar, pero finalmente, si una PC puede mostrarlo/leerlo/usarlo, alguien podrá copiarlo. – Mauro

7

Si desea ocultar el código HTML/CSS/JavaScript de los visitantes, eso no es posible. Incluso si uno no puede usar Firebug, uno simplemente puede ver el código fuente HTML. Cualquier JavaScripts y hojas de estilo externos se pueden descargar como archivos de texto sin formato que son. Debido a que HTML, CSS y JavaScript son tecnologías del lado del cliente, que se descargan como texto sin formato e interpretadas por el navegador web, es teóricamente imposible para ocultar su código. Lo mejor que puede hacer para que el código sea más difícil de entender, es ofuscar. Ver Wikipedia.

5

"Mis rutinas de javascript" pertenecen a la empresa para la que trabajo y mi empresa quiere que las cosas que desarrollamos estén aseguradas.

usted no seguro cosas con palmaditas la ligera "hackers" en los dedos cuando utilizan una herramienta de depuración específica. Intente evitar que utilicen la última herramienta de hackers : "Ver código fuente".

Si está por ahí, está por ahí. "Seguro" significa algo diferente en este contexto. Significa asegurar los datos importantes que tengas al emplear técnicas que son impenetrables * incluso con pleno conocimiento del código fuente. El código fuente en sí mismo no es asegurable, y tampoco necesita serlo.


*) "impenetrable" = bastante difícil para subvertir en un período razonable de tiempo, nada es 100% :)

10

Ummm .... ¿Qué significa el uso de Firefox (con o sin Firebug) tiene que ver con esto?

Utilizo IE y puedo ver su JavaScript con la misma facilidad. Del mismo modo con Google Chrome. Demonios, puedo descargar tu JavaScript al ver tu página web en mi Palm Treo.

Cualquier cosa a la que se pueda acceder directamente desde un navegador puede descargarse y analizarse con total tranquilidad. Como han dicho otros (mejor que yo), JavaScript que se ejecuta en su sitio web debe considerarse de "código abierto". Busque otra forma de hacerlo (es decir, procesar en su servidor) o acepte que alguien lo pirateará y lo verá.

Tenga en cuenta que sus rutinas son obviamente buenas (en términos de lo que hacen para sus páginas web) que un usuario vaya a su sitio web e inmediatamente diga "Oye, esto es genial, me pregunto cómo lo hacen". De lo contrario, no te preocupes: la mayoría de las personas no estarán lo suficientemente interesadas como para tratar de ver tu JavaScript.

Puede intentar minificar su JavaScript, pero eso no es 100% seguro para detener a alguien que está decidido. Podría intentar encriptarlo, pero nunca lo intenté. O ponga un aviso de copyright en sus archivos de JavaScript, para que al menos alguien más no pueda pasar su trabajo como suyo sin meterse en problemas legales.

2

sólo para proporcionar un pequeño truco que yo uso ayuda a las personas menores de ver su código,

Uno de los trucos yo que no impide que el código JavaScript de ser encontrado por el desarrollador experianced o piratas informáticos, pero disuade a los pocos personas jugando con Firebug/inspector,

uso jQuery u otra lib con un selector de rejilla

el segundo puerto de escala es todos los archivos se los pone en un archivo del cargador de EG

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); 

Así que para empezar estaban usando un cierre de este prevenir cualquier usuario de la consola de entrada del inspector para ver el código que ha sido ejecutado.

así que una vez que se haya pasado este archivo cargará su CSS y JS pero todavía puede ver allí cargado en el elemento principal de su inspector, gracias a los navegadores y la forma en que funcionan puede eliminar y no descargarlos significa que el código no se eliminará de la ejecución, pero impedirá que se muestren en el inspector, esto es lo que se incluye en el descargador.

unloader.js

(function($){ 
    $("head *[loaded=loader]").remove(); 
})(jQuery); 

Lo anterior se eliminará el los archivos cargados aunque el cargador.

La única cosa que hay que recordar es añadir loaded="loader" a su alforja que eso incluye el cargador, ahora esto no significa que sea imposible que alguien para ver sus archivos, pero se detiene el inspector de la muestra en el código HTML,

las formas de solucionar esto pueden ser para ver el código "Ver código fuente", vea el archivo del cargador y léalo así que asegúrese de minimizar el código que utilizo Google Closure Compiler (http://closure-compiler.appspot.com/home)

incluso esto no los detiene solo lo hace más difícil. uno de los pasos que probé pero no uso está en el cargador y los archivos que carga utilizan una regla .HTAccess para verificar que tengan un enlace de referencia de su sitio, esto evitará que naveguen directamente a sus archivos de código js/css

otro consejo no los almacene en lugares normales y no utilice nombres comunes guiones por ejemplo, en/scripts/CSS/estilo/o style.css

Aquí hay un ejemplo del cierre del cargador Compilado a continuación, ofuscado

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); 

para reproducir de: a http://closure-compiler.appspot.com/home poner su código en virtud de la // AÑADIR TU CÓDIGO

A continuación, el resultado que se le da la espalda uso: http://www.javascriptobfuscator.com/Default.aspx para que sea aún más ilegible

Esperanza esto ayuda a cualquier otra persona que quiera hacer el JS lo más seguro posible

Pero recuerde que todos los demás ha dicho esto no va a detener a los piratas informáticos pro simplemente hacen que sea muy difícil de leer y entender

+0

Después de esto, decidí publicar una guía completa en mi blog échale un vistazo: http://blog.123torrentz.com/2012/06/prevent-firebug-or-inspectors-from.html – HotHeadMartin

0

Mi reputación es demasiado baja para comentar, pero solo quería señalar algo que noté después de aprender sobre window.history.pushState(); parece que puede cambiar lo que está actualmente en la barra de direcciones, y una vez que lo hace, "ver el origen de la página" no funciona. Entonces, si hubiera una manera de impedir que las herramientas de desarrollador funcionen, no sabría cómo ver el código fuente.

EDITAR: Después de usar window.history.pushState(), cuando veo las herramientas de desarrollador, me dice que vuelva a cargar la página para ver lo que está en un archivo javascript (pero de nuevo muestra la dirección en el archivo JS así que eso no ayuda mucho)

Cuestiones relacionadas