javascript seguridad eval

Iniciado por matake, 25 Julio 2016, 00:00 AM

0 Miembros y 1 Visitante están viendo este tema.

matake

Hola,

Ya he leído por todos los lados lo del "eval es evil" etc ... aunque la mayoría se resumen a decir que es malo pero no argumentan el porque.
Investigando mas y mas encontré también explicaciones como:
"que se puede ejecutar codigo arbitrario o de terceros".

Todavía estoy en fase de experimentos y he pensado en una minificacion javascript
De los que he probado me gusto UglifiJS2 http://lisperator.net/uglifyjs/
Pero me di cuenta que si empleo el packer http://dean.edwards.name/packer/
la minificacion es mucho mas efectiva ( sobre todo si antes de minificar voy a reunir todos los script en un unico fichero ) ya que el packer minifica todas las palabras que se repiten dentro del código ... incluido propriedades css ... palabras reservadas del proprio javascript ... etc ... o sea todo.

Lo que pasa con packer es que para restaurar los script en el cliente emplea eval()

Entonces mi pregunta seria:
¿Si empleo un chequeo de tipo suma hash antes del eval, reduce este el riesgo de seguridad que supone dicha "function del diablo" :D ?

Igual para los scripts recibidos como JSON la misma pregunta de antes.

Gracias

P.D.
Del lado servidor tengo:
https (TLS)
en apache securizando cabeceras (entre otras):
Código (apache) [Seleccionar]

Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Xss-Protection "1; mode=block"
Header always set X-Content-Type-Options "nosniff"
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure


saneadas todas las variables de entrada (3 filtros )


engel lex

Eval es peligroso en terminos de servidor un Eval en PHP es un hueco casi seguro... pero en jscript, normalmente es menos  peligroso, el codigo de terceros podria ejecutarse por ejemplo en este foro si puedes alcanzar el Eval desde este comentario, si te aseguras de que un usuario por vias normales no lo pueda alcanzar, no hay problemas

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

matake

#2
Gracias por responder @engel lex.

Lo del eval en el servidor ya esta decidido NUNCA usarlo.
Intentare, como tu dices, de asegurarme ( hasta que puedo :D ) que en javascript en el cliente  no sea alcanzable.

Saludos y felicidades por vuestro foro ... empiezo a aprender cositas poco a poco.

P.D.

Ja ja ... :D en este foro es como si se encuentran los lobos con las ovejas ... ley antes el tema "javascript bypassear hash de un formulario" de @Kaxperday  ... y justo del tema que expuso el aprendi que tengo que inventarme algun chequeo (limpieza) de todos los listeners asociados a eventos en el cliente para que justamente no me pase lo que el intenta hacer.

engel lex

Por eso el hacking etico roza tan cerca el no etico/ilegal, hay que entender las trampas para evitarlas
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.