Pregunta

Sé que es imposible de código fuente ocultar pero, por ejemplo, si tengo que vincular un archivo JavaScript de mi CDN a una página web y no quiero que la gente sepa la ubicación y / o el contenido de este script , es esto posible?

Por ejemplo, para vincular un guión de un sitio web, usamos:

<script type="text/javascript" src="http://somedomain.com/scriptxyz.js">
</script>

Ahora, es posible ocultar por parte del usuario, donde el guión viene de, u ocultar el contenido guión y todavía lo utilizan en una página web?

Por ejemplo, guardándolo en mi CDN privada que necesita una contraseña para acceder a archivos, funcionaría eso? Si no es así, ¿cuál sería trabajar para conseguir lo que quiero?

¿Fue útil?

Solución

Buena pregunta con una respuesta simple: no se puede

, JavaScript es un lenguaje de programación del lado del cliente, por lo tanto, funciona en la máquina del cliente, por lo que puede en realidad no ocultar nada desde el cliente.
Ofuscar su código es una buena solución, pero no es suficiente, porque, aunque es difícil, alguien podría descifrar el código y "robar" la secuencia de comandos.
Hay algunas maneras de hacer que su código sea difícil de ser robado, pero como ya he dicho nada es a prueba de balas.

De la parte superior de mi cabeza, una idea es restringir el acceso a sus archivos js externos desde fuera la página de incrustar el código. En ese caso, si usted tiene

<script type="text/javascript" src="myJs.js"></script>

y trata de alguien a acceder a la myJs.js archivo en el navegador, no debería concederse ningún acceso a la fuente de la escritura.
Por ejemplo, si la página está escrita en PHP, puede incluir la secuencia de comandos a través de la función include y dejar que el guión decidir si es seguro " para volver Es de código.
En este ejemplo, necesitará el "js" externos (escrito en PHP) Archivo myJs.php

<?php
    $URL = $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
    if ($URL != "my-domain.com/my-page.php")
    die("/\*sry, no acces rights\*/");
?>
// your obfuscated script goes here

que se incluiría en su página principal mi-page.php

<script type="text/javascript">
    <?php include "myJs.php"; ?>;
</script> 

De esta manera, sólo el navegador podían ver el contenido del archivo js.

Otra idea interesante es que al final de la secuencia de comandos, se borra el contenido del elemento script dom, de manera que después de que el navegador evalúa su código, el código desaparece:

<script id="erasable" type="text/javascript">
    //your code goes here
    document.getElementById('erasable').innerHTML = "";
</script>

Estos son todos los cortes simples que no pueden, y no puedo enfatizar esto lo suficiente: no puede proteger completamente su código JS, pero seguro que puede molestar a alguien que está tratando de "robar" su código.

Actualización:

Hace poco me encontré con un artículo muy interesante escrito por Patrick Weid sobre cómo ocultar su código JS, y él revela un enfoque diferente : puede codificar el código fuente en una imagen! Por supuesto, eso no es a prueba de balas tampoco, pero es otra valla que se podría construir alrededor de su código.
La idea detrás de este enfoque es que la mayoría de los navegadores pueden usar el elemento canvas hacer manipulación de píxeles en las imágenes. Y puesto que el píxel de la lona está representado por 4 valores (RGBA), cada píxel puede tener un valor en el rango de 0-255. Eso significa que puede almacenar un personaje (real es de código ASCII) en cada píxel. El resto de la codificación / decodificación es trivial.
Gracias, Patrick!

Otros consejos

Lo único que puede hacer es obfuscate su código para que sea más difícil leer. No importa lo que hagas, si desea que el Javascript para ejecutar en su navegador van a tener que tener el código.

Leer este . Tiene una muy buena manera de ocultar su código fuente, tanto en la vista y depuración herramienta como Firebug.

Desde mi conocimiento, esto no es posible.

Su navegador tiene que tener acceso a los archivos JS para poder ejecutarlos. Si el navegador tiene acceso, entonces el usuario del navegador también tiene acceso.

Si a proteger con contraseña sus archivos JS, el navegador no será capaz de acceder a ellos, derrotando el propósito de tener JS en el primer lugar.

Justo al lado de la parte superior de la cabeza, que podría hacer algo como esto (si se puede crear secuencias de comandos del lado del servidor, que suena como si puede):

En lugar de cargar el guión como si fuera normal, envía una petición AJAX a una página PHP (que podría ser cualquier cosa, yo sólo lo uso yo). Haga que el PHP localizar el archivo (tal vez en una parte no pública del servidor), abrirlo con file_get_contents, y el retorno (es decir: echo). El contenido como una cadena

Cuando esta cadena vuelve al JavaScript, tienen que crear una nueva etiqueta script, poblar su innerHTML con el código que acaba de recibir, y adjuntar la etiqueta a la página. (Usted podría tiene problemas con esto;. innerHTML puede no ser lo que necesita, pero se puede experimentar)

Si lo hace mucho, es posible que incluso quieren crear una página PHP que acepta una variable GET con el nombre de la secuencia de comandos, por lo que se puede agarrar de forma dinámica diferentes secuencias de comandos utilizando el mismo PHP. (Tal vez usted podría utilizar el poste en su lugar, para que sea un poco más difícil que otras personas puedan ver lo que está haciendo. No sé.)

EDIT: pensé que sólo estaba tratando de ocultar el Ubicación de la secuencia de comandos. Obviamente, esto no ayudaría mucho si usted está tratando de ocultar el propio script.

Olvídalo, esto no es factible.

No importa lo que intente, no funcionará. Todo lo que un usuario necesita hacer para descubrir su código y su ubicación es mirar en la pestaña neto en firebug o uso violinista para ver lo que están haciendo las solicitudes.

Google Closure Compiler , YUI compresor , Minify, / Packer / ... etc, son opciones para comprimir / ofuscar sus códigos JS. Pero ninguno de ellos le puede ayudar a ocultar su código de los usuarios.

Cualquier persona con un conocimiento decente puede fácilmente decodificación / de-ofuscar el código utilizando herramientas como JS Beautifier . Lo que sea.

Así que la respuesta es, siempre se puede hacer que su código sea más difícil de leer / decodificar, pero seguro que no hay manera de ocultar.

Creo que la única manera es poner los datos requeridos en el servidor y sólo permiten el usuario conectado a acceder a los datos según sea necesario (también se puede hacer un poco de lado del servidor cálculos). Este planteo a proteger su código javascript pero que sea unoperatable sin el código del lado del servidor

Como he dicho en el comentario que dejé en respuesta gion_13 antes (por favor leer), que realmente no se puede. No con javascript.

Si no desea que el código esté disponible del lado del cliente (= stealable sin grandes esfuerzos), mi sugerencia sería hacer uso de PHP (ASP, Python, Perl, Ruby, Java JSP +-servlets) que se procesa en el servidor y sólo los resultados de la ejecución de cálculo / código se sirve al usuario. O, si lo prefiere, incluso Flash o un applet de Java que te permite el cálculo del lado del cliente de ejecución / código, pero se compilan y por lo tanto más difícil de revertir-motor (no imposible de este modo).

Sólo mi 2 centavos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top