Estoy escribiendo un javascript que genera algunos datos. Tengo la intención de usarlo como una aplicación web gratuita, abierta para todos los que quieran usarla.

Pero obtuve mucho tiempo y esfuerzo para escribir este guión (principalmente porque lo quiero para uso personal y no pude encontrar nada eficiente y lo reanudé). Soy un desarrollador principiante y sé que es imposible proteger u ofuscar el script porque ni siquiera necesita otra aplicación para decodificar información ofuscada, hay muchos métodos y el más flojo es encontrar la palabra "eval" en el js archivo y reemplácelo con "alerta". Cuando abre el boom de la página html, recibe una ventana emergente con todo el código decodificado ...

Lo que pregunto es si hay alguna forma de prevenir cuando un usuario "guarda como ..." la página con el navegador, los archivos javacript y css no se guardan en la estructura. En el pasado intenté guardar algunas páginas con el navegador y solo pude guardar el archivo html (y a veces ni siquiera con toda la información html, sospecho que había iframes), no js y no css ... intenté con algunos descargadores de sitios web (sitesucker, deepvacumm, etc.) y ni siquiera con estos descargadores pude descargar los archivos. La única forma era "inspeccionar" la página y descargarla manualmente y hacer que la estructura de la carpeta fuera manual.

Como dije, quiero dar este script totalmente gratis como servicio (incluso compraré un dominio) porque lo hice con amor. Mi único pedido (para recibir algún tipo de orgullo personal) es que cuando las personas quieran usarlo, vengan a mi sitio y lo hagan en tiempo real y si "guardan como ..." la página, pueden guardar la información generada que no guardan el script, por lo que volvieron a usar el servicio.

¿Alguien puede ayudar con algunos consejos e información? Enlaces, consejos, trucos profesionales y personales?

2
Joana 27 ago. 2011 a las 15:13

4 respuestas

La mejor respuesta

Puede descargar todos los archivos JavaScript / CSS a través de un archivo JavaScript (un cargador), como este. De esa manera, los descargadores deben ejecutar JavaScript antes de que puedan saber qué archivos JavaScript / CSS están incluidos, lo que no creo que hagan. Como dije en mis comentarios, ¡no estoy completamente seguro de si esto funciona!

Html:

...
<script src="loader.js"></script>
<!-- no other JavaScript/CSS here -->
...

loader.js:

window.onload = function() {
    var head = document.getElementsByTagName('head')[0]; // the <head>

    var scriptElement = document.createElement('script'); // create <script>
    scriptElement.src = 'file1.js';
    head.appendChild(scriptElement); // add <script> to <head>

    var linkElement = document.createElement('link'); // create <link>
    linkElement.setAttribute('rel', 'stylesheet');
    linkElement.href = 'file1.css';
    head.appendChild(linkElement); // add <link> to <head>
}
0
pimvdb 27 ago. 2011 a las 11:33

Realmente no hay una solución técnica a su problema: si el usuario puede ejecutar su javascript, tendrá que descargarlo de alguna manera. Cualquiera sea la solución elegida, cualquier persona con suficiente conocimiento de Firebug o el inspector de Webkit podrá recuperar el script. Puedes ofuscarlo si lo minimizo, pero no impedirá que nadie lo use como está.

La solución a su problema es legal, no técnica. Si declara explícitamente, en su encabezado Javascript, que el script está bajo una licencia restrictiva, cualquiera que lo copie violaría la ley. Si encuentra a alguien haciendo esto, puede:

  • pídales que eliminen el script de su sitio
  • amenazar con demandar?

(por cierto, si puedo dar una opinión personal aquí, hay mucho orgullo personal al regalar código que cualquiera puede reutilizar ... puede incluir su nombre y un enlace a su sitio en el encabezado del script: se considera una forma muy mala (y potencialmente ilegal) para eliminar los avisos de atribución y derechos de autor)

0
Philippe Plantier 27 ago. 2011 a las 12:21

Convierta su código en un script del lado del servidor (PHP, Python, C #, etc.). Es la única forma de asegurarse de que sus usuarios no podrán "robar" su trabajo.

Eventualmente JavaScript debe ser decodificado por mi navegador, y en ese momento también está disponible para mí, y no hay forma de evitarlo, solo puede hacerlo más difícil.

Pero la conclusión es: ¿por qué tienes que hacerlo? Si solo desea "orgullo personal", ¿no sería mejor cargar su código en un sitio colaborativo como github o < a href = "http://sourceforge.net/" rel = "nofollow"> SourceForge donde otras personas pueden apreciar su trabajo y tal vez incluso contribuir a él.

Además, si comparte su código bajo una licencia como GPL o CC, todos los que reutilicen su código deben darle crédito (sí, uno simplemente puede robarlo, pero eso también es posible en su caso).

0
Albireo 27 ago. 2011 a las 12:13

Creo que no es posible impedir el acceso al código Javascript en el navegador. También creo que al minimizar el código JS, p. con el compilador de cierre de Google (opción AVANZADA) protege su código tanto como puede. Aunque el código se puede copiar tal como está, no se puede entender ni modificar con un esfuerzo razonable.

2
Jiri Kriz 27 ago. 2011 a las 12:06