Funcion dir() dentro de un script de zope

Josef Meile jmeile en hotmail.com
Vie Jul 1 12:40:20 CEST 2005


Hola Hector,

podrías incluir el "dir" en un ExternalMethod, pero me parece que sería
una vulnerabilidad muy grave si lo estas utilizando en un servidor
diferente a tú máquina local. De todas formas, incluyo el código para
que te hagas una idea:

En el directorio Extensions crea un archivo llamado myDir con los
siguientes contenidos:

from zExceptions import Unauthorize
from AccessControl import getSecurityManager

def myDir(objeto):
   userObj=getSecurityManager().getUser()
   if userObj.has_role('Manager'):
     return dir(objeto)
   raise Unauthorized,
     "Usted no está authorizado para ejecutar este script"


Luego crea el External method con los siguientes datos:

id: myDir
Module name: myDir
Function name: myDir

Si bien, la verificación de los roles del usuario registrado actualmente
reduce un poco el impacto de la vulnerabilidad que significa exponer el
methodo "dir", todavía queda la posibilidad de que te encuentres un
admin malicioso que pueda causar problemas.

Si solo accesas el méthodo con un usuario, podrías reemplazar el método
por lo siguiente:

from zExceptions import Unauthorize
from AccessControl import getSecurityManager

def myDir(objeto):
   userObj=getSecurityManager().getUser()
   if (userObj.has_role('Manager')) and \
      (getSecurityManager().getUser().getUserName() != 'miUsuario'):
     return dir(objeto)
   raise Unauthorized,
     "Usted no está authorizado para ejecutar este script"

Para asegurarte que sólo "Manager" o un role que tu hayas definido pueda
ejecutar el ExternalMethod, ve a la pestaña seguridad de zope y
desabilita el checkbox "View" en la columna "Acquire permission
settings" y activalo en la columna "Manager" (o en el role que hayas
definido). Para mayor seguridad, yo definiría un role y se lo asignaría
a solo un usuario con derechos de "Manager". Pero cabe aclarar que yo,
personalmente, sólo haría esto en mi server local y no en un server que
este expuesto en internet.

Saludos,
Josef



Hector Miuler Malpica Gallegos wrote:
> Hola amigos, quiero saber las propiedades del objeto "context" en un
> script python dentro de zope, hasta ahora solo se que es "<ProxyFolder
> at prueba5001>", pero quiero saber más, mi primera misión es obtener el
> contenido de una carpeta que muestra, a mi parecer un dato raro, lo que
> estoy intentando es usar dir(), 
> "print dir(context)"
> 
> pero veo que no funciona el dir() :S alguna sugerencia ?
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es


------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


Más información sobre la lista de distribución Python-es