Ofuscando el codigo php generado por symfony

379 views
Skip to first unread message

allan

unread,
Jan 28, 2010, 1:01:16 PM1/28/10
to symfony-es
Hola a todos,

He desarrollado mi sistema y quiero ofuscar el codigo principal de las
principales clases, asi como la contraseña de acceso al servidor.

Alguien me puede decir como hacer esto en un proyecto de symfony, Que
necesito???

ReynierPM

unread,
Jan 28, 2010, 1:08:23 PM1/28/10
to symfo...@googlegroups.com
On 1/28/2010 1:01 PM, allan wrote:
> Hola a todos,
>
> He desarrollado mi sistema y quiero ofuscar el codigo principal de las
> principales clases, asi como la contrase�a de acceso al servidor.

>
> Alguien me puede decir como hacer esto en un proyecto de symfony, Que
> necesito???
>

Creo que una de las mejores cosas que han inventado despu�s de la
aparici�n de Internet a sido Google �por qu� no realizas una b�squeda
con la misma pregunta que haces a la lista que nada tiene que ver con
Symfony? No obstante a ello existen varios, los m�s conocidos: Zend
Encoder e IonCube, ambos de pago. En SW libre no conozco ninguno (si
alguien conoce alguno agradecer�a me dijeran)

PD: Disculpa el sarcasmo pero es la �nica forma de ense�ar a usar
correctamente las listas
--
Saludos
ReynierPM

allan

unread,
Jan 28, 2010, 2:30:20 PM1/28/10
to symfony-es
Por supuesto que antes de poner el post e buscado en google pero hasta
ahora no he logrado que me funciona la ofuscación que brindan los
sitios de internet como: http://www.hackingballz.com/herramientas/ofuscar-codigos.html
donde se pone el codigo php y te devuelve el codigo ofuscado.

En actualizo mi sistema F5 despues de cambiar el codigo de la clase
por el nuevo codigo ofuscado me lanza un error diciemdome que no
reconoce los metodos de las acciones que se relacionan con las
plantillas y mas. En fin que hasta ahora no me ha funcionado
correctamente.

Otra cosa que quiero hacer es ofuscar la contraseña que pongo para
conectarse a la base de datos.

Por todo esto fue que pregunté aquí, para que me dijeran como se hace


esto en un proyecto de symfony

Gaston Nina

unread,
Jan 28, 2010, 7:16:35 PM1/28/10
to symfo...@googlegroups.com
disculpa el comentario pero es mi parecer... symfony es software libre y bueno supongo que si desarrollaste en el deberias de seguir su linea y publicar lo mas que sabes como el caso de este grupo donde todos comparten lo que saben... mi humilde opinion CC

Carlos Martínez

unread,
Jan 28, 2010, 8:48:35 PM1/28/10
to symfo...@googlegroups.com

Hola,

Si bien Symfony es libre, está bajo licencia MIT que permite reutilizar el sw para crear uno libre como no libre [1] .

Saludos!!

[1] http://es.wikipedia.org/wiki/MIT_License#Caracter.C3.ADsticas_y_usos_de_esta_licencia

El 28 de enero de 2010 21:16, Gaston Nina <gasto...@gmail.com> escribió:
disculpa el comentario pero es mi parecer... symfony es software libre y bueno supongo que si desarrollaste en el deberias de seguir su linea y publicar lo mas que sabes como el caso de este grupo donde todos comparten lo que saben... mi humilde opinion CC

--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a symfo...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a symfony-es+...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/symfony-es?hl=es.



--
Carlos Martínez Sánchez
Ing. Ejec. Informática
(09) - 2657574

José Leonardo Diaz Ordoñez

unread,
Jan 28, 2010, 10:11:11 PM1/28/10
to symfo...@googlegroups.com
Yo se que alguien pudo hacerlo funcionar con el Zend Guard, pero con la version 1.0,  eso lo lei hace como un año en el foro de symfony, deberias buscar por ahi.
Asi como asi no funciona, habia que hacer unas modificaciones pero estoy seguro que alguien lo hizo.
Mucha suerte y espero que si encuentras algo lo compartas en la lista ya que es algo muy importante.
Symfony puede ser SW libre eso no quiere decir que uno no pueda hacer este tipo de cosas, por seguridad, por precaucion o por cualquier otro tipo de razones.

Mucha suerte
----------------------------------------------------------
José Leonardo Diaz Ordoñez
Ingeniero en Electrónica y Telecomunicaciones
Énfasis en Ingeniería Telemática.
Universidad del Cauca, Popayán -Colombia
2007

Daniel González

unread,
Jan 29, 2010, 3:50:24 AM1/29/10
to symfo...@googlegroups.com
2010/1/29 José Leonardo Diaz Ordoñez <ingle...@gmail.com>

Yo se que alguien pudo hacerlo funcionar con el Zend Guard, pero con la version 1.0,  eso lo lei hace como un año en el foro de symfony, deberias buscar por ahi.
Asi como asi no funciona, habia que hacer unas modificaciones pero estoy seguro que alguien lo hizo.
Mucha suerte y espero que si encuentras algo lo compartas en la lista ya que es algo muy importante.
Symfony puede ser SW libre eso no quiere decir que uno no pueda hacer este tipo de cosas, por seguridad, por precaucion o por cualquier otro tipo de razones.

Mucha suerte


Una contraseña no se puede ofuscar, tiene que ir en texto plano.
 
--
---------------------------------------------------------
Daniel González Cerviño
FreelanceMadrid.es
Mail : daniel....@freelancemadrid.es
Tel (+34)  653 96 50 48
---------------------------------------------------------

Jose R. Prieto

unread,
Jan 29, 2010, 6:31:01 AM1/29/10
to symfo...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Un tema interesante :)


Lo primero: la ofuscación de la contraseña de base de datos; ese tema
lo veo bastante complicado.


Para poder hacerlo, tu aplicación debería de funcionar SIEMPRE con un
login + contraseña del usuario; para que tu aplicación "sepa" usuario
y contraseña de la base de datos, tendrías dos opciones; la primera,
que, a mayores, le solicites una contraseña adicional (que sería la
clave para descifrar la contraseña de acceso a la base de datos, o
bien directamente la clave de acceso a base de datos), o bien,
directamente, que cuándo crees un usuario + contraseña, lo crees
también en tu base de datos -con los permisos que te parezcan
oportunos-, y así al pedirle user+pass también estés pidiendo user +
pass de la ddbb (pero esto te va a obligar a un mantenimiento más
costoso).


Date cuenta que en cuánto necesites conexión contra base de datos, si
montas lo que acabo de describir, y no está el usuario autentificado,
la aplicación no sabría ni usuario ni contraseña de base de datos...
Con lo cual, no funcionaría.


La parte "complicada"; cómo hacerlo. Bien, tendrías que cambiar
bastantes cosas, dentro del propio núcleo de symfony, y / o bien
cambiando clases en los factories. Lo primero de todo, cómo se ejecuta
symfony; tienes una excelente guía aquí:


http://www.symfony-project.org/more-with-symfony/1_4/es/10-Symfony-Internals

>
>     Gestores de configuración o /Config Handlers/
>
> Los gestores de configuración son la parte esencial del sistema de
> configuración de Symfony. La tarea de los gestores de configuración
> es /entender/ el significado de los archivos de configuración. Cada
> gestor de configuración es simplemente una clase que se emplea para
> transformar la configuración YAML en el código PHP que realmente se
> ejecuta cuando es necesario. Cada archivo de configuración dispone
> de su propio gestor de configuración que se configura en el archivo
> |config_handlers.yml|
> <http://trac.symfony-project.org/browser/branches/1.3/lib/config/config/config_handlers.yml>.
>
> Los gestores de configuración no procesan los archivos YAML, ya que
> eso es tarea de |sfYaml|. En realidad, lo único que hacen los
> gestores de configuración es crear una serie de instrucciones PHP en
> base a la información YAML y guardar esas instrucciones en un
> archivo PHP que se incluye después durante la ejecución de la
> aplicación. La versión /compilada/ de cada archivo de configuración
> YAML se encuentra en el directorio de la cache.
>


En el archivo config_handlers.yml (líneas 4 y 5) tenemos:


> config/databases.yml:
>   class:    sfDatabaseConfigHandler


Con lo cuál tendrías que cambiar esa clase por una propia, para
definir la configuración de base de datos, y adaptarla a tus
necesidades. Creo que con ello, tendrías solucionado tu problema en
cuánto a guardar la contraseña de base de datos en texto plano.

Ahora bien, date cuenta que es un esfuerzo importante;¿te compensa
respecto a los beneficios que puedas sacar? Si la contraseña se
encuentra en un directorio al que no tiene acceso el usuario
directamente, si configuras tu base de datos para que solo acepte
conexiones del host dónde se está ejecutando tu aplicación (ya sea
localhost, u otro, si la base de datos y la aplicación corren en
máquinas diferentes)... ¿Dónde está el problema de guardar la
contraseña en claro? Bajo mi punto de vista, claro; no se los
requisitos de seguridad que puedes tener. Si nos cuentas más, igual te
podemos ayudar.



La otra parte, ofuscar el código PHP que genera symfony; tiene que
poderse hacer; ¿por qué lo digo? Pues, sencillo, por que, por ejemplo,
el sistema de caché te deja seleccionar cómo vas a cachear tus vistas,
etc:


http://www.symfony-project.org/reference/1_4/en/09-Cache
http://www.symfony-project.org/reference/1_4/en/05-Factories#chapter_05_view_cache

En el factories, te deja especificar qué sistema de caché quieres; si
vas a la API:


http://www.symfony-project.org/api/1_4/cache

Verás que tienes opciones para Memcache, APC, Eaccelerator:


http://www.symfony-project.org/api/1_4/sfAPCCache
http://www.symfony-project.org/api/1_4/sfEAcceleratorCache
http://www.symfony-project.org/api/1_4/sfMemcacheCache

Y cualquiera de estos sistemas.. ¿Cómo funciona? Pues guardando el
bytecode, el código "compilado" de PHP, y accediendo directamente a él:


http://www.howtoforge.com/apc-php5-apache2-debian-etch
http://php.net/manual/en/book.apc.php
http://www.pcfrikis.com/2009/05/01/acelerando-php-con-apc/

http://eaccelerator.net/

http://php.net/manual/en/book.memcache.php
http://memcached.org/

De la descripción de eAccelerator:


> eAccelerator is a free open-source PHP accelerator, optimizer, and
> dynamic content cache. It increases the performance of PHP scripts
> by *caching them in their compiled state*, so that the overhead of
> compiling is almost completely eliminated.


Que, me parece, es justamente lo que quieres... Por tanto, debes de
investigar un poco más en esa dirección, a mi entender :)

Aunque, básicamente, creo que tu solución pasa por cambiar en tu
factories y / o en tu config_handlers.yml los archivos que
correspondan, para que hagan lo que necesitas (acceder a los archivos
en bytecode que tengas, en vez de a los que tendrías en la estructura
de aplicación Symfony).

No obstante, de nuevo, es un trabajo _gordo_.
Igual deberías de plantearte montar un servidor de aplicaciones PHP:


http://www.zend.com/en/products/server/

Que debería de solucionarte todos esos problemas... Ahora, claro, ya
no estamos hablando de algo opensource; ¡Anda!; acabo de ver que hay
una Community Edition:


http://www.zend.com/en/products/server-ce/index

Igual hasta te soluciona el problema :)

Tampoco es que sea excesivamente cara la licencia de Zend Server:


http://shop.zend.com/eu/zend-server.html

Ya nos contarás qué decides, y cómo te va.

Espero haberte sido de ayuda.

Un saludo.

El 29/01/10 09:50, Daniel González escribió:
> 2010/1/29 José Leonardo Diaz Ordoñez <ingle...@gmail.com

>
>     Yo se que alguien pudo hacerlo funcionar con el Zend Guard, pero
>     con la version 1.0,  eso lo lei hace como un año en el foro de
>     symfony, deberias buscar por ahi.
>     Asi como asi no funciona, habia que hacer unas modificaciones
>     pero estoy seguro que alguien lo hizo.
>     Mucha suerte y espero que si encuentras algo lo compartas en la
>     lista ya que es algo muy importante.
>     Symfony puede ser SW libre eso no quiere decir que uno no pueda
>     hacer este tipo de cosas, por seguridad, por precaucion o por
>     cualquier otro tipo de razones.
>
>     Mucha suerte
>
>
>
> Una contraseña no se puede ofuscar, tiene que ir en texto plano.

> --
> ---------------------------------------------------------
> Daniel González Cerviño
> FreelanceMadrid.es
> Mail : daniel....@freelancemadrid.es

> Tel (+34)  653 96 50 48
> ---------------------------------------------------------
> --
> Has recibido este mensaje porque estás suscrito al grupo
> "symfony-es" de Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo electrónico
> a symfo...@googlegroups.com.
> Para anular tu suscripción a este grupo, envía un correo electrónico
> a symfony-es+...@googlegroups.com
> Para tener acceso a más opciones, visita el grupo en
> http://groups.google.com/group/symfony-es?hl=es.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJLYsbtAAoJEFlRSentq+j0DIQH/1w+vt4d+X803BRxyRTO9thO
jF28HQCyQy6MnoNnBefGql29S+uw5HAQAfh8tcWwZczX3NY9oJDjoirTzCggcXn0
eHh9D/uF/+ir4oURVhLhQq5OW0oSVjLMA8E/CqIdo2VeuOVq7zgqnDd8kw8QpL4w
5ka3EAd6moNyrIQqcexp118Uun0QNVXd/uapqjYqBcXInfcA3rLMfjPgfdpnWO/g
DWnNUP3vTQFvRr5fSlu6FNpfQxvRJ2FGphAEPL1W5LfFm8cFf7fnpq2ubLgugFU7
2fNPp8xnCDnRHX34E39TNjw/1EJ2quDXpFD+KRo9AdUMwzqa0UseVrfv1Yt29eA=
=EtZd
-----END PGP SIGNATURE-----

allan

unread,
Jan 29, 2010, 1:19:12 PM1/29/10
to symfony-es
Jose,

Muchas gracias por tu comentario, ya veo que tendré que investigar
mucho mas sobre el tema. En cuanto tenga una solución viable para
todos, la publicaré para que les sirva a todos.

Saludos

Alain

On Jan 29, 6:31 am, "Jose R. Prieto" <joser.pri...@gmail.com> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Un tema interesante :)
>

> Lo primero: la ofuscaci�n de la contrase�a de base de datos; ese tema
> lo veo bastante complicado.
>
> Para poder hacerlo, tu aplicaci�n deber�a de funcionar SIEMPRE con un
> login + contrase�a del usuario; para que tu aplicaci�n "sepa" usuario
> y contrase�a de la base de datos, tendr�as dos opciones; la primera,
> que, a mayores, le solicites una contrase�a adicional (que ser�a la
> clave para descifrar la contrase�a de acceso a la base de datos, o


> bien directamente la clave de acceso a base de datos), o bien,

> directamente, que cu�ndo crees un usuario + contrase�a, lo crees
> tambi�n en tu base de datos -con los permisos que te parezcan
> oportunos-, y as� al pedirle user+pass tambi�n est�s pidiendo user +
> pass de la ddbb (pero esto te va a obligar a un mantenimiento m�s
> costoso).
>
> Date cuenta que en cu�nto necesites conexi�n contra base de datos, si
> montas lo que acabo de describir, y no est� el usuario autentificado,
> la aplicaci�n no sabr�a ni usuario ni contrase�a de base de datos...
> Con lo cual, no funcionar�a.
>
> La parte "complicada"; c�mo hacerlo. Bien, tendr�as que cambiar
> bastantes cosas, dentro del propio n�cleo de symfony, y / o bien
> cambiando clases en los factories. Lo primero de todo, c�mo se ejecuta
> symfony; tienes una excelente gu�a aqu�:
>
> http://www.symfony-project.org/more-with-symfony/1_4/es/10-Symfony-In...
>
>
>
>
>
> >     Gestores de configuraci�n o /Config Handlers/
>
> > Los gestores de configuraci�n son la parte esencial del sistema de
> > configuraci�n de Symfony. La tarea de los gestores de configuraci�n
> > es /entender/ el significado de los archivos de configuraci�n. Cada
> > gestor de configuraci�n es simplemente una clase que se emplea para
> > transformar la configuraci�n YAML en el c�digo PHP que realmente se
> > ejecuta cuando es necesario. Cada archivo de configuraci�n dispone
> > de su propio gestor de configuraci�n que se configura en el archivo
> > |config_handlers.yml|
> > <http://trac.symfony-project.org/browser/branches/1.3/lib/config/confi...>.
>
> > Los gestores de configuraci�n no procesan los archivos YAML, ya que
> > eso es tarea de |sfYaml|. En realidad, lo �nico que hacen los
> > gestores de configuraci�n es crear una serie de instrucciones PHP en
> > base a la informaci�n YAML y guardar esas instrucciones en un
> > archivo PHP que se incluye despu�s durante la ejecuci�n de la
> > aplicaci�n. La versi�n /compilada/ de cada archivo de configuraci�n


> > YAML se encuentra en el directorio de la cache.
>

> En el archivo config_handlers.yml (l�neas 4 y 5) tenemos:
>
> > config/databases.yml:
> >   class:    sfDatabaseConfigHandler
>
> Con lo cu�l tendr�as que cambiar esa clase por una propia, para
> definir la configuraci�n de base de datos, y adaptarla a tus
> necesidades. Creo que con ello, tendr�as solucionado tu problema en
> cu�nto a guardar la contrase�a de base de datos en texto plano.
>
> Ahora bien, date cuenta que es un esfuerzo importante;�te compensa
> respecto a los beneficios que puedas sacar? Si la contrase�a se


> encuentra en un directorio al que no tiene acceso el usuario
> directamente, si configuras tu base de datos para que solo acepte

> conexiones del host d�nde se est� ejecutando tu aplicaci�n (ya sea
> localhost, u otro, si la base de datos y la aplicaci�n corren en
> m�quinas diferentes)... �D�nde est� el problema de guardar la
> contrase�a en claro? Bajo mi punto de vista, claro; no se los
> requisitos de seguridad que puedes tener. Si nos cuentas m�s, igual te
> podemos ayudar.
>
> La otra parte, ofuscar el c�digo PHP que genera symfony; tiene que
> poderse hacer; �por qu� lo digo? Pues, sencillo, por que, por ejemplo,
> el sistema de cach� te deja seleccionar c�mo vas a cachear tus vistas,
> etc:
>
> http://www.symfony-project.org/reference/1_4/en/09-Cachehttp://www.symfony-project.org/reference/1_4/en/05-Factories#chapter_...
>
> En el factories, te deja especificar qu� sistema de cach� quieres; si

> Ver�s que tienes opciones para Memcache, APC, Eaccelerator:
>
> http://www.symfony-project.org/api/1_4/sfAPCCachehttp://www.symfony-project.org/api/1_4/sfEAcceleratorCachehttp://www.symfony-project.org/api/1_4/sfMemcacheCache
>
> Y cualquiera de estos sistemas.. �C�mo funciona? Pues guardando el
> bytecode, el c�digo "compilado" de PHP, y accediendo directamente a �l:
>
> http://www.howtoforge.com/apc-php5-apache2-debian-etchhttp://php.net/manual/en/book.apc.phphttp://www.pcfrikis.com/2009/05/01/acelerando-php-con-apc/
>
> http://eaccelerator.net/
>
> http://php.net/manual/en/book.memcache.phphttp://memcached.org/
>
> De la descripci�n de eAccelerator:


>
> > eAccelerator is a free open-source PHP accelerator, optimizer, and
> > dynamic content cache. It increases the performance of PHP scripts
> > by *caching them in their compiled state*, so that the overhead of
> > compiling is almost completely eliminated.
>
> Que, me parece, es justamente lo que quieres... Por tanto, debes de

> investigar un poco m�s en esa direcci�n, a mi entender :)
>
> Aunque, b�sicamente, creo que tu soluci�n pasa por cambiar en tu


> factories y / o en tu config_handlers.yml los archivos que
> correspondan, para que hagan lo que necesitas (acceder a los archivos

> en bytecode que tengas, en vez de a los que tendr�as en la estructura
> de aplicaci�n Symfony).


>
> No obstante, de nuevo, es un trabajo _gordo_.

> Igual deber�as de plantearte montar un servidor de aplicaciones PHP:
>
> http://www.zend.com/en/products/server/
>
> Que deber�a de solucionarte todos esos problemas... Ahora, claro, ya
> no estamos hablando de algo opensource; �Anda!; acabo de ver que hay


> una Community Edition:
>
> http://www.zend.com/en/products/server-ce/index
>
> Igual hasta te soluciona el problema :)
>
> Tampoco es que sea excesivamente cara la licencia de Zend Server:
>
> http://shop.zend.com/eu/zend-server.html
>

> Ya nos contar�s qu� decides, y c�mo te va.


>
> Espero haberte sido de ayuda.
>
> Un saludo.
>

> El 29/01/10 09:50, Daniel Gonz�lez escribi�:
>
> > 2010/1/29 Jos� Leonardo Diaz Ordo�ez <ingleona...@gmail.com
> > <mailto:ingleona...@gmail.com>>


>
> >     Yo se que alguien pudo hacerlo funcionar con el Zend Guard, pero

> >     con la version 1.0,  eso lo lei hace como un a�o en el foro de


> >     symfony, deberias buscar por ahi.
> >     Asi como asi no funciona, habia que hacer unas modificaciones
> >     pero estoy seguro que alguien lo hizo.
> >     Mucha suerte y espero que si encuentras algo lo compartas en la
> >     lista ya que es algo muy importante.
> >     Symfony puede ser SW libre eso no quiere decir que uno no pueda
> >     hacer este tipo de cosas, por seguridad, por precaucion o por
> >     cualquier otro tipo de razones.
>
> >     Mucha suerte
>

> > Una contrase�a no se puede ofuscar, tiene que ir en texto plano.
>
> > --
> > ---------------------------------------------------------
> > Daniel Gonz�lez Cervi�o
> > FreelanceMadrid.es
> > Mail : daniel.gonza...@freelancemadrid.es
> > <mailto:daniel.gonza...@freelancemadrid.es>


> > Tel (+34)  653 96 50 48
> > ---------------------------------------------------------
> > --

> > Has recibido este mensaje porque est�s suscrito al grupo


> > "symfony-es" de Grupos de Google.

> > Para publicar una entrada en este grupo, env�a un correo electr�nico
> > a symfo...@googlegroups.com.
> > Para anular tu suscripci�n a este grupo, env�a un correo electr�nico
> > a symfony-es+...@googlegroups.com
> > Para tener acceso a m�s opciones, visita el grupo en


> >http://groups.google.com/group/symfony-es?hl=es.
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.9 (GNU/Linux)

> Comment: Using GnuPG with Mozilla -http://enigmail.mozdev.org/

Reply all
Reply to author
Forward
0 new messages