Foros del Web » Programando para Internet » Javascript »

Proteger el Código Js

Estas en el tema de Proteger el Código Js en el foro de Javascript en Foros del Web. Hola ! De primera instancia me viene a la cabeza que por estar JavaScript del lado del cliente, cualquiera puede ver el código fuente y ...
  #1 (permalink)  
Antiguo 19/03/2006, 06:17
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Mensaje Proteger el Código Js

Hola !

De primera instancia me viene a la cabeza que por estar JavaScript del lado del cliente, cualquiera puede ver el código fuente y estudiarlo (y si se trata de la competencia, incluso copiarnos).

Como seguramente esto no se puede evitar, me estaba preguntando si hay alguna forma de, aunque sea, hacerle la vida más dificil a aquellos que intenten leer nuestros códigos sin nuestro consentimiento.

Agradecido desde ya, un saludo.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #2 (permalink)  
Antiguo 19/03/2006, 06:29
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Aunque exista forma de proteger nuestro código, siempre que quieran lo copiarán...

Cosas posibles: encriptación, redefinición, esconder el código en distintas partes de la página... y si llegas a hacer el código "casi" invisible, tal vez también lo ralentices tanto que llegue a "no interesar..."

Yo dejé de comerme el coco con eso. Creo que es mejor ofrecerlo para que lo usen a condición de que respeten los créditos...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 19/03/2006, 06:39
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Yo me conformaría quizá con algún programa que hiciera algo como:

Cambiar:
function cambiarSelect()
function insertarRegistro()
function formatearNumero()

y variables como:
var numString;
var nombre;
var fotografiaPath;

por cosas como esta:
function f3092023()
function f8934232()
function f9804302()

var v98342;
var v23423;
var v32480;

y también:
- que quitar los comentarios.
- que escribiera todo en el código en una sola línea.
- que insertara funciones parásitas con la misma sintaxis cuya función sea no hacer nada (de adorno).


Quizá eso no haga el código más lento y sea para un programa de escritorio sencillo de realizar.

Yo con un código así, me daría mucha flojera volverlo legible, si alguien sabe de un programa que haga estas cosas, viene de lujo a este post, gracias !

(sobre ofrecer el código) Pues sí, caricatos, es otra forma, pero digamos si es algo que te costó una semana de trabajo y te está dejando dinero, lo que menos quisieras es que lo copiaran, lo harán, jeje, pero aunque sea dificultarlo, =)
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #4 (permalink)  
Antiguo 19/03/2006, 17:30
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Si no quieres que lo copien, entonces no lo subas al server.
¿Que me dices de open source? ¿crees que a ellos les tomo "1 semana" hacerlo?
Yo, en tu caso, borraria este post.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 19/03/2006, 22:25
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Flavio, no me lo tomes a mal, no soy egoísta y la cantidad de mensajes escritos en el foro, aunque por ahora siguen siendo pocos, puede decir más que mis palabras.

El Open Source es fantástico y gracias a ese movimento me he visto yo muy beneficiado.

Mi interés Flavio, es más para alguna aplicación comercial.

Imagina simplemente que estás trabajando en un Banco, usan mucho JavaScript pero lo último que desean es que la gente se entere cómo funciona su sistema pues podrían correr algún peligro si alguien da con un agujero en su sistema así que de alguna manera lo protegen, por eso mi interés, hay situaciones diferentes para cada uso de un site.

O lo que comenté, que también se me hace válido, competir por visitas (y dinero en forma indirecta competir por clientes, que es mi caso real) en el que la otra persona (mi competencia) es un buenazo en diseño y manejo de Flash, yo no sé nada de Flash, pero podría competir por el lado de la interfase más amigable, ¿dejarías tu código todo bonito y comentado para que tu competencia simplemente copie y pegue? Yo no.

Él tiene la ventaja ahora con lo que sabe, yo estoy compitiendo por el mismo mercado pero lo único que tengo en la cabeza es la programación y si no lo uso, perderé mi oportunidad.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #6 (permalink)  
Antiguo 19/03/2006, 23:16
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
No se puede ocultar y nadie debería basar ningún tema de seguridad en javascript. JavaScript sólo para lograr algo de interactividad, y quizá algún efecto especial, pero no para seguridad.

Última edición por Panino5001; 20/03/2006 a las 17:52
  #7 (permalink)  
Antiguo 20/03/2006, 12:57
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Podrias tener en una tabla tu pagina web, y con PHP haces lo que querias.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #8 (permalink)  
Antiguo 20/03/2006, 18:20
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Thanks por sus aportaciones. Estoy muy interesado en el tema. Con respecto a la seguridad, tienes mucha razón, bro.

Miren cuates, me encontré un programa que transforma esto:

Código PHP:
//
//------------------------------------------------------
// Calculate salary for each employee in "aEmployees".
// "aEmployees" is array of "Employee" objects.
//------------------------------------------------------
function CalculateSalary(aEmployees)
{
   var 
nEmpIndex 0;
   while (
nEmpIndex aEmployees.length)
   {
      var 
oEmployee aEmployees[nEmpIndex];
      
oEmployee.fSalary CalculateBaseSalary(oEmployee.nType,                                               oEmployee.nWorkingHours);
      if (
oEmployee.bBonusAllowed == true)
      {
         
oEmployee.fBonus CalculateBonusSalary(oEmployee.nType
                                                 
oEmployee.nWorkingHours
                                                 
oEmployee.fSalary); 
      }
      else
      {
         
oEmployee.fBonus 0;
      }
      
oEmployee.sSalaryColor GetSalaryColor(oEmployee.fSalary 
                                              
oEmployee.fBonus);
      
nEmpIndex++;
   }

en esto:

Código PHP:
//
function c(g){var m=0;while(m<g.length){var r=g[m];r.l=d(r.n,r.o);if(r.j==true){
r.k=e(r.n,r.o,r.l);}else{r.k=0;}r.t=f(r.l+r.k);m++;}} 

No es perfecto, pero pues ya aunque sea es algo. Con eso me conformo, =)

Thanks.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #9 (permalink)  
Antiguo 20/03/2006, 18:30
Avatar de X.Cyclop
Usuario baneado!
 
Fecha de Ingreso: diciembre-2005
Ubicación: México, D.F.
Mensajes: 1.328
Antigüedad: 18 años, 4 meses
Puntos: 0
No tienes necesidad de esconder el código, al fin y al cabo es innecesario porque es JScript. Si fuera Php, Asp, Jsp, Perl, Python o cualquier lenguaje servidor si sería problema, pero se esconde solo y no tienes que preocuparte.
  #10 (permalink)  
Antiguo 20/03/2006, 19:32
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Fijate esto, no sé si sirva, pero luce bien. Nunca se me había ocurrido:

http://www.php-hispano.net/foros/PHP/13131
  #11 (permalink)  
Antiguo 20/03/2006, 23:38
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Luce bastante bien !!

Y lo mejor de todo es que el thread sigue fresco, el autor puso el último comentario hace 55 minutos según me aparece.

Acabo de agregar el thread a mis favoritos para ver en qué acaba la discusión.

Gracias !!
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #12 (permalink)  
Antiguo 21/03/2006, 07:30
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Hola, uamistad! Luego de probarlo te puedo decir que no funciona, porque aunque pongas cabeceras no cache igualmente queda en los temporales y puedes acceder a su contenido.
  #13 (permalink)  
Antiguo 21/03/2006, 20:46
Avatar de Wdeah  
Fecha de Ingreso: julio-2005
Ubicación: Argentina
Mensajes: 109
Antigüedad: 18 años, 9 meses
Puntos: 0
yo tampoco estoy deacuerdo en encriptar el codigo javascript. pero si en ocultarlo para una mayor seguridad, por ahi dijeron que javascript es para interactuar, algunos efectos y demas, y no pienso asi. javascript sirve para mucho mas que eso, por ejemplo, usando AJAX y un lenguaje de servidor, como por ejemplo PHP, se pueden hacer cosas REALMENTE impresionantes, tales como para confundir una pagina web con un programa de escritorio. si es la verdad, ese es mi punto de vista. y ahora el tema de porque esconder los codigos, por el simple hecho de que es una manera mas de protejer la pagina frente a amenazas potenciadas.
con respecto a el open source, yo tambien estoy a favor, no me estoy contradiciendo, la diferencia es que al no ser un profesional programando, al mostrar los codigos, se podran encontrar muchos bugs que pase por alto, y de esta manera explotarlos. un ejemplo
cuantos exploits existen para joder un php nuke?
cuantos exploits existen para joder un foro vbulletin?
la respuesta es obvia...
un saludo
  #14 (permalink)  
Antiguo 22/03/2006, 00:14
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Perdón por la ignorancia sobre el tema, pero no entiendo a qué se refieren con encriptar el código JavaScript.

¿Cómo puede el navegador ejecutar JavaScript si el código está encriptado?
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #15 (permalink)  
Antiguo 22/03/2006, 21:05
Avatar de Wdeah  
Fecha de Ingreso: julio-2005
Ubicación: Argentina
Mensajes: 109
Antigüedad: 18 años, 9 meses
Puntos: 0
que el codigo este encriptado no significa que los navegadores no lo puedan comprender, lo que se pretende es que a una persona se le haga mas dificil interpretarlo.
  #16 (permalink)  
Antiguo 22/03/2006, 21:15
Avatar de Wdeah  
Fecha de Ingreso: julio-2005
Ubicación: Argentina
Mensajes: 109
Antigüedad: 18 años, 9 meses
Puntos: 0
mira, un navegador standar esto lo interpreta perfectamente y funciona sin problemas, pero para una persona no seria lo mismo.

Código:
<script language=JavaScript>function decrypt_p(x){var l=x.length,b=1024,i,j,r,p=0,s=0,w=0,t=Array(63,39,43,36,19,11,2,4,41,34,0,0,0,0,0,0,14,27,46,54,7,17,55,12,52,48,59,62,37,26,0,35,29,13,53,10,49,32,31,44,42,50,1,0,0,0,0,60,0,38,30,33,3,58,25,24,57,15,18,28,21,45,22,9,23,56,20,8,47,40,5,61,16,51,6);for(j=Math.ceil(l/b);j>0;j--){r='';for(i=Math.min(l,b);i>0;i--,l--){w|=(t[x.charCodeAt(p++)-48])<<s;if(s){r+=String.fromCharCode(165^w&255);w>>=8;s-=2}else{s=6}}document.write(r)}}decrypt_p("24@eUOhc3dV_m2KwDnuhXtb_Utb_gbqqo4GYGtWIvMtHSVPIvz@InyWI5AwcAa
............. y sigue asi muchasssss lineas mas de codigo...

aca te dejo la url de la pagina web que lo implementa
http://www.fs-designs.com/index.php
mira el codigo fuente, y si te interesa, yo tengo un script que hace que el codigo quede asi de encriptado.
un saludo

Última edición por Wdeah; 22/03/2006 a las 21:20
  #17 (permalink)  
Antiguo 22/03/2006, 22:09
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Me doy por vencido.

Me encontré un breve artículo que me ayudó mucho a aceptar la derrota, lo coloco aquí junto con la liga de quien lo creó:

Querer encriptar, mayormente, las CSS y el Javascript es, mayormente, una tontería

Submitted by mort on 2 July, 2004 - 11:50. Cada n días alguien pregunta de forma bienintencionada en algún foro o
lista de correo cómo puede encriptar sus hojas de estilo y javascript.
La discusión que sigue siempre es la misma y hoy he contestado a un
mail de ese estilo en Ovillo con una lista de argumentos bastante
completita. La anoto aqui para las generaciones futuras.
Sobre intentar encriptar/proteger/blablabla las hojas de estilo y el
javascript
  1. ES INUTIL Y ESTÚPIDO. Proteger mis css, cuando tú puedes
    acceder libremente a las CSS más sofisticadas del mundo, es tan
    absolutamente descabellado que raya lo patológico. Es como si mi
    peluquero me pone gorro para que nadie pueda copiar sus creaciones.
  2. NO ES ÉTICO. Si yo accedo libremente a las creaciones de los
    demás y de ellas extraigo know-how que convierto en creaciones mias y
    despues intento proteger eso para romperr el ciclo, me convierto en lo
    que toda la vida se ha llamado un sinvergüenza redomado.
  3. NO ES PROVECHOSO. Todo el mundo tiene claro, de manera más o
    menos explicita, que el chollo de esto es aprender de los demás y que
    cortar eso es matar a la gallina de los huevos de oro. A los que no lo
    tienen claro se les suele explicar con paciencia en listas
    sitios como esta :)
  4. ES SOCIALMENTE EMBARAZOSO. Esto se explica porque
    cada vez que alguien intenta desactivar el botón derecho del ratón,
    consigue que un millón de personas piensen 'Vaya capullo' y se rian de él. Esto sienta mal y desanima.
FUENTE: http://simplelogica.net/logicola/index.php?q=/node/177





Jeje, hasta me ha hecho reír un poco. De cualquier forma me divertí mucho haciendo pruebas. Gracias a todos los que participaron con su opinión.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:59.