Encriptar contenido en la url

307 views
Skip to first unread message

mcgredy

unread,
May 7, 2009, 1:52:58 PM5/7/09
to symfony-es
Hola
Amigo cuando mando de una pagina a otra en la url se ve la direccion ,
el modulo y el execute al que va dirigida la solictud, por medida de
seguridad eso no debe ser asi, como puediera encritar o hacerle algo
para que el usuario no pueda ver esas cosas

Gracias de antemano

Sebastian M

unread,
May 7, 2009, 3:06:57 PM5/7/09
to symfony-es
Lo podes hacer con el routing.yml lee el manual que ahi explican como
ocultar el modelo y la accion. Si queres tambien ocultar por ejemplo
el id que no salga en la url, podes usar algo que se llama
permanklinks que usa un texto en vez del id, en el manual en el
capitulo de enrutamiento tambien se encuentra eso. Adicional hay un
plugin que permite crear los permanlinks automaticamente.

Yo lo tengo asi en mi aplicacion, pero te recomiento primero que leeas
y si tenes alguna duda escribis.

oyepez003

unread,
May 7, 2009, 3:11:59 PM5/7/09
to symfony-es
Creo que encriptar URL en symfony no es funcional recuerda que el
procesa sus acciones mediante sus controladores frontales. La
seguridad de symfony no esta en la url sino en sus modulos, si una
persona no tiene permisos sobre un modulo por mas que tenga la url no
podra acceder al modulo y menos a los archivos que estan dentro del
modulo si has configurado bien tu servidor. Si lees el tutorial Jobeet
veras que la practica que nos recomienda Fabien Potencier (Creador de
Symfony) es acceder a los objetos mediante la propia URL claro esta
hay que configurar muy bien el archivo routing.yml para que funcione
como muestran ahi.

williams

unread,
May 7, 2009, 6:05:27 PM5/7/09
to symfo...@googlegroups.com
Si habia leido algo de redefinir las rutas pero no pude hacerlo, por ejemplo con la parte del update que me muestra el id. Se puede dejar: modulo/action/update/2 o ni siquiera el numero del id?

murkein


--- El jue 7-may-09, oyepez003 <oyep...@gmail.com> escribió:


¡Obtén la mejor experiencia en la web!
Descarga gratis el nuevo Internet Explorer 8
http://downloads.yahoo.com/ieak8/?l=e1

Sebastian M

unread,
May 8, 2009, 8:48:35 AM5/8/09
to symfony-es
Si podes quitar el id, supongamos q hay un modulo noticias y la idea
es que no salga /noticias/update/id/1, para quitar el id de la url no
solo la palabra si no tambien el numero, tenes que hacer lo
sisguiente:

- Crear un nuevo campo en la tabla noticias normalmente llamado
"slug", este campo es un varchar que puede tener el titulo de noticia
sin espacios en blanco, ejemplo: el campo titulo de una noticia es
"Como eliminar el id" entonces el campo slug de esa noticia va ser
"Como_eliminar_el_id", si notas no hay espacios en blanco. (Hay que
tirar de nuevo el schema)
- Cada vez que crees una nueva noticia pues debes crear su respectivo
"slug" esto lo podes hacer con un plugin llamado
sfPropelActAsSluggableBehaviorPlugin, este plugin las crea
automaticamente para que no te preocupes por eso.
- Ahora ya no vas a pasar por la url el id de la noticia, si no su
"slug", normalmente el link para editar una noticia es asi noticas/
edit?id=noticia.getId(), esto lo vas a cambiar por
noticias/edit?slug=noticia.getSlug(), el metodo edit del action de
noticias recibe el slug con este slug podes obtener el id de la
noticia y realizar el retriveByPk y mostrar la noticia.

Si tenes alguna duda me avisas


On 7 mayo, 17:05, williams <williams_riv...@yahoo.com> wrote:
> Si habia leido algo de redefinir las rutas pero no pude hacerlo, por ejemplo con la parte del update que me muestra el id. Se puede dejar: modulo/action/update/2 o ni siquiera el numero del id?
>
> murkein
>
> --- El jue 7-may-09, oyepez003 <oyepez...@gmail.com> escribió:
>
> De: oyepez003 <oyepez...@gmail.com>
> Asunto: [symfony-es] Re: Encriptar contenido en la url
> A: "symfony-es" <symfo...@googlegroups.com>
> Fecha: jueves, 7 mayo, 2009, 4:11 pm
>
> Creo que encriptar URL en symfony no es funcional recuerda que el
> procesa sus acciones mediante sus controladores frontales. La
> seguridad de symfony no esta en la url sino en sus modulos, si una
> persona no tiene permisos sobre un modulo por mas que tenga la url no
> podra acceder al modulo y menos a los archivos que estan dentro del
> modulo si has configurado bien tu servidor. Si lees el tutorial Jobeet
> veras que la practica que nos recomienda Fabien Potencier (Creador de
> Symfony) es acceder a los objetos mediante la propia URL claro esta
> hay que configurar muy bien el archivo routing.yml para que funcione
> como muestran ahi.
>
> On 7 mayo, 13:52, mcgredy <yvic...@estudiantes.uci.cu> wrote:
>
> > Hola
> > Amigo cuando mando de una pagina a otra en la url se ve la direccion ,
> > el modulo y el execute al que va dirigida la solictud, por medida de
> > seguridad eso no debe ser asi, como puediera encritar o hacerle algo
> > para que el usuario no pueda ver esas cosas
>
> > Gracias de antemano
>
>       ____________________________________________________________________________________
> ¡Obtén la mejor experiencia en la web!
> Descarga gratis el nuevo Internet Explorer 8.http://downloads.yahoo.com/ieak8/?l=e1

williams

unread,
May 8, 2009, 9:35:24 AM5/8/09
to symfo...@googlegroups.com
y despues de todo ese proceso tan engorroso, como queda la url /noticias/update/id/1?

Otra cosa, si me pongo a inventar eso del slug, tengo que redefinir todas mis tablas en la bd ?

murkein


--- El vie 8-may-09, Sebastian M <sebastian....@gmail.com> escribió:
¡Obtén la mejor experiencia en la web!
Descarga gratis el nuevo Internet Explorer 8

Sebastian M

unread,
May 8, 2009, 9:43:19 AM5/8/09
to symfony-es
Es un proceso engorroso si no lo tenes en cuenta desde el principio,
pero te puedo asegurar que vale la pena realizarlo, no es muy
recomendable que tengas tus id por ahi a la vista de todo el mundo.

Segun como tengas el archivo de routing.yml la url puede quedar de
muchas formas:
Sin regla de enrutamiento
- noticias/update/slug/titulo_noticia
Con una regla de enrutamiento, claro que esto depende de como la hagas
- noticias/titulo_noticia

Para crear el slug hay que agregar el nuevo campo en las tablas q
queres q tengan el slug.

On 8 mayo, 08:35, williams <williams_riv...@yahoo.com> wrote:
> y despues de todo ese proceso tan engorroso, como queda la url /noticias/update/id/1?
>
> Otra cosa, si me pongo a inventar eso del slug, tengo que redefinir todas mis tablas en la bd ?
>
> murkein
>
> --- El vie 8-may-09, Sebastian M <sebastian.mejia.r...@gmail.com> escribió:

williams

unread,
May 8, 2009, 9:48:23 AM5/8/09
to symfo...@googlegroups.com
Bueno, es cierto eso de los id, pero vamos a suponer que se lo ponga ( Es lo mas probable por lo de la vista de los id's) Cuando genere el modelo y  los nuevos forms, en que variaría todo esto?

murkein


--- El vie 8-may-09, Sebastian M <sebastian....@gmail.com> escribió:
¡Obtén la mejor experiencia en la web!
Descarga gratis el nuevo Internet Explorer 8

Sebastian M

unread,
May 8, 2009, 9:56:45 AM5/8/09
to symfony-es
En realidad agregar un nuevo campo a las tablas en la base de datos no
afecta en nada el funcionamiento de la aplicacion actual, lo q cambia
son los archivos base unicamente, especialmente con slug el cual
nisiquiera se va ver en un formulario.

Lo que si va cambiar y eso lo haces manualmente es la forma en q vas
hacer la solicitudes y la navegacion por el sitio, ya que no lo vas
hacer por id si no por slug.

Cuando cambies el schema y lo generes de nuevo tene en cuenta que ese
proceso borra toda la informacion de la base de datos, para eso se
crea el archivo fixtures el cual carga informacion basica de una forma
muy sencilla en la base de datos.

On 8 mayo, 08:48, williams <williams_riv...@yahoo.com> wrote:
> Bueno, es cierto eso de los id, pero vamos a suponer que se lo ponga ( Es lo mas probable por lo de la vista de los id's) Cuando genere el modelo y  los nuevos forms, en que variaría todo esto?
>
> murkein
>

oyepez003

unread,
May 8, 2009, 10:11:23 AM5/8/09
to symfony-es
Exactamente lo del slug es lo que nos hablan en Jobeet y la solucion
de Sebastian es la correcta, no obstante si tienes datos importantes
en BD que no quieres borrar puedes hacer

symfony propel:build-sql

y luego

symfony propel:build-model

luego te vas al archivo data/sql y solo tomas el script que necesitas.

Pablo Braulio

unread,
May 8, 2009, 10:18:39 AM5/8/09
to symfo...@googlegroups.com
Perdonar que me meta en este hilo, pero es un tema que llevo un tiempo
pensando.

Me parece interesante lo expuesto sobre slug, pero creo que eso es
interesante según el caso.

Si tienes una aplicación o web, donde se ve todo públicamente, pues
puede interesar.

En mi caso es una aplicación donde sólo los usuarios registrados pueden
acceder. Por mucho que pongan http://dominio/modulo/accion/id/X no van a
poder hacer nada si no están autenticados.

No es por críticar, sólo es mi opinión y puede ser erronea. Que en tal
caso, se acepta una corrección.
--
Saludos cordiales.
Pablo.

oyepez003

unread,
May 8, 2009, 10:31:31 AM5/8/09
to symfony-es
Exactamente todo esta bien cuando dices lo de si no estan autenticados
no podran ver

http://dominio/modulo/accion/id/X

y si todo el mundo tiene acceso a cualquier id tambien es funcional no
optar por slug.

pero si tienes dos usuarios autenticados y ese usuario1 no deberia
poder ver lo del usuario2 entonces si debes implementar lo del slug ya
que los usuarios podrian jugar con id/1 id/2 id/n y te traera la
informacion, al menos que
lo evites en el action.

On 8 mayo, 10:18, Pablo Braulio <brul...@gmail.com> wrote:
> Perdonar que me meta en este hilo, pero es un tema que llevo un tiempo
> pensando.
>
> Me parece interesante lo expuesto sobre slug, pero creo que eso es
> interesante según el caso.
>
> Si tienes una aplicación o web, donde se ve todo públicamente, pues
> puede interesar.
>
> En mi caso es una aplicación donde sólo los usuarios registrados pueden
> acceder. Por mucho que ponganhttp://dominio/modulo/accion/id/Xno van a

Sebastian M

unread,
May 8, 2009, 10:33:58 AM5/8/09
to symfony-es
En mi opinion, la segura debe aplicar en todo hasta para usuarios
registrados, en especial porq uno nunca sabe que intensiones tienen
las personas en nuestra aplicacion o si a esa persona le robaron la
contrasena y lo que dice oyepez es completamente cierto. Hacerlo con
slug es lo mismo que enrutar por id, solo que como lo dije antes es
canson o engorroso hacerlo si uno lo tuvo en cuenta desde el inicio
del proyecto.

On 8 mayo, 09:18, Pablo Braulio <brul...@gmail.com> wrote:
> Perdonar que me meta en este hilo, pero es un tema que llevo un tiempo
> pensando.
>
> Me parece interesante lo expuesto sobre slug, pero creo que eso es
> interesante según el caso.
>
> Si tienes una aplicación o web, donde se ve todo públicamente, pues
> puede interesar.
>
> En mi caso es una aplicación donde sólo los usuarios registrados pueden
> acceder. Por mucho que ponganhttp://dominio/modulo/accion/id/Xno van a

Pablo Braulio

unread,
May 8, 2009, 10:45:33 AM5/8/09
to symfo...@googlegroups.com
> pero si tienes dos usuarios autenticados y ese usuario1 no deberia
> poder ver lo del usuario2 entonces si debes implementar lo del slug ya
> que los usuarios podrian jugar con id/1 id/2 id/n y te traera la
> informacion, al menos que
> lo evites en el action.

Esperaba que me dijeras esto. :-D

Yo para estos casos tengo una solución efectiva.

En mi caso, los usuarios pertenecen a empresas. Los usuarios de una
misma empresa pueden crear, ver, modificar y borrar lo que pertenezca a
sus empresas. La seguridad a implementear, en este caso, es para que los
usuarios de una empresa no puedan hacer nada con la información de las
otras empresas.

En el formulario de login, cuando un usuario se "loguea" recoge el
número de empresa como un atributo.

Luego en la acción de los modulos pongo esto, que comprueba si la
empresa a la que pertenece el usuario que ejecuta es la misma que a la
ue pertenece el registro que quiere ejecutar:

public function preExecute(){
if($this->getActionName()== 'edit' || $this->getActionName()== 'delete'){
$valor= EmpleadosPeer::retrieveByPK($this->getRequestParameter('id'));

if($valor->getEmpresa()!=
sfContext::getInstance()->getUser()->getAttribute('numEmpresa')){
$this->forward('empleados', 'index');
}

}
}

Espero que se entienda la idea.
--
Saludos cordiales.
Pablo.

oyepez003

unread,
May 8, 2009, 10:58:57 AM5/8/09
to symfony-es
Exactamente al menos que lo evites en el action. Pero te digo (Todo en
este mundo puede pasar) si un usuario tuyo pertenece a mas de una
empresa.... tendrias que refactorizar el action y hasta crear una
vista para que elija a que empresa desea entrar, te lo digo por si
acaso no lo habias pensado y podrias solucionarlo antes de que pase.

Pablo Braulio

unread,
May 8, 2009, 11:03:23 AM5/8/09
to symfo...@googlegroups.com
oyepez003 escribió:

> Exactamente al menos que lo evites en el action. Pero te digo (Todo en
> este mundo puede pasar) si un usuario tuyo pertenece a mas de una
> empresa.... tendrias que refactorizar el action y hasta crear una
> vista para que elija a que empresa desea entrar, te lo digo por si
> acaso no lo habias pensado y podrias solucionarlo antes de que pase.
>

Si, lo había pensado, y se puede solucionar muy facilmente.

Con lo que tu dices sería un problema si un usuario que tiene acceso a
varias empresas tratará de acceder modificando la URL a datos de alguna
de las empresas a las que tiene acceso. En ese caso, lo que he mostrado
antes no le dejará hacerlo.

Para solucionar eso, tengo diseñado un formulario que le permite cambiar
de empresa y luego manipular los datos de esta.

Sencillo y efectivo.

--
Saludos cordiales.
Pablo.

Sebastian M

unread,
May 8, 2009, 11:14:28 AM5/8/09
to symfony-es
Eso es completamente respetable, cada quien decide como desarrollar
sus aplicaciones, solo estamos hablando de las ventajas de implementar
slug, hay un valor agregado que trae slug y es el de la url mas limpia
y entendible para el usuario, si yo veo una url de este tipo noticias/
ver/el_mercado_global autameticamente se donde me encuentro a
diferencia de noticia/ver/id/1

En todo caso mi forma de ver es hay que tratar de usar al maximo el
routing.yml y campos tipo slug, son herramientas que estan ahi ya
hechas para usarlas, hay q aprovecharlas.

Pablo Braulio

unread,
May 8, 2009, 11:18:06 AM5/8/09
to symfo...@googlegroups.com
Sebastian M escribió:

> Eso es completamente respetable, cada quien decide como desarrollar
> sus aplicaciones, solo estamos hablando de las ventajas de implementar
> slug, hay un valor agregado que trae slug y es el de la url mas limpia
> y entendible para el usuario, si yo veo una url de este tipo noticias/
> ver/el_mercado_global autameticamente se donde me encuentro a
> diferencia de noticia/ver/id/1
>
> En todo caso mi forma de ver es hay que tratar de usar al maximo el
> routing.yml y campos tipo slug, son herramientas que estan ahi ya
> hechas para usarlas, hay q aprovecharlas.
>

Completamente de acuerdo.

Iba a preguntarte que mas daba que en la url se viera
noticias/ver/mercado_laboral que noticas/ver/id/1, pero ya me lo has
contestado.

Yo de momento no lo voy a implementar. Demasiado trabajo. ;-D

Mas adelante ya lo probare.
--
Saludos cordiales.
Pablo.

williams

unread,
May 8, 2009, 2:43:45 PM5/8/09
to symfo...@googlegroups.com
A la final, hay que validar en cada action de los modulos con seguridad por el id del usuario actual?

Yo tengo que hacer dos aplicaciones en donde en la app x solo entren usuarios x y en app y solo se logueen usuarios Y. No hay problema con eso?

murkein


--- El vie 8-may-09, Pablo Braulio <bru...@gmail.com> escribió:

De: Pablo Braulio <bru...@gmail.com>
Asunto: [symfony-es] Re: Encriptar contenido en la url
¡Obtén la mejor experiencia en la web!
Descarga gratis el nuevo Internet Explorer 8

Yoelkis Hernandez Victor

unread,
May 12, 2009, 4:27:50 PM5/12/09
to symfo...@googlegroups.com
Hola
Necesito saber como puedo eliminar, para el adicionar es con save(), eliminar tiene alguna palabra reservada igual

Salu2
Yoelkis
Dir. 81 106 Tel. 8161/2641/3013
Facultad 7
_________________________


________________________________

De: symfo...@googlegroups.com en nombre de Sebastian M
Enviado el: vie 08/05/2009 11:14
Para: symfony-es
Asunto: [symfony-es] Re: Encriptar contenido en la url




winmail.dat

Yoelkis Hernandez Victor

unread,
May 12, 2009, 4:28:01 PM5/12/09
to symfo...@googlegroups.com
Hola
Necesito saber como puedo eliminar, para el adicionar es con save(), eliminar tiene alguna palabra reservada igual

Salu2
Yoelkis
Dir. 81 106 Tel. 8161/2641/3013
Facultad 7
_________________________


________________________________

winmail.dat

Yoelkis Hernandez Victor

unread,
May 12, 2009, 4:28:08 PM5/12/09
to symfo...@googlegroups.com
Hola
Necesito saber como puedo eliminar, para el adicionar es con save(), eliminar tiene alguna palabra reservada igual

Salu2
Yoelkis
Dir. 81 106 Tel. 8161/2641/3013
Facultad 7
_________________________


________________________________

winmail.dat

Reynier Perez Mira

unread,
May 12, 2009, 4:32:05 PM5/12/09
to symfo...@googlegroups.com
> Necesito saber cómo puedo eliminar, para el adicionar es con save(), eliminar

> tiene alguna palabra reservada igual

1) Abre un hilo Nuevo para tu pregunta que nada tiene que ver con la anterior (no secuestres los hilos)
2) Aclara un poco mejor lo que quieres, personalmente, no entendí nada por lo que no puedo ayudarte

Un saludo
Ing. Reynier Pérez Mira
Dirección Técnica IP

oyepez003

unread,
May 12, 2009, 5:57:59 PM5/12/09
to symfony-es
para guardar save y para borrar delete
Reply all
Reply to author
Forward
0 new messages