[Zope] Security Assertions

Chris McDonough chrism@zope.com
Wed, 16 Jan 2002 12:43:08 -0500


Note that up until Zope 2.5.0b4 there is a bug in the way module 
security assertions are handled that makes it impossible to declare more 
than one assertion without overwriting a previous assertion.  It's not 
really a "security hole", it's just annoying and clearly broken.  I'd 
suggest that you complain about this (or do it yourself) if you think a 
monkeypatch is in order for Zope 2.3/2.4.

Godefroid Chapelle wrote:

>  > Casey Duncan wrote:
>  >
>  > > So the following things don't work:
>  > >
>  > > from Products.Formulator.Form import FormValidationError
>  >
>  > Either Martijn or you need to add the following lines to a Product
>  > __init__.py somewhere:
>  >
>  > from AccessControl import ModuleSecurityInfo
>  > ModuleSecurityInfo('Products').declarePublic('Formulator')
>  > ModuleSecurityInfo('Products.Formulator').declarePublic('Form')
>  > 
> ModuleSecurityInfo('Products.Formulator.Form').declarePublic('FormValidationError') 
> 
>  >
>  > Cheers,
>  >
>  > Evan @ Zope
> 
> 
> I added the above code in the corresponding  __init__.py on my machine.
> 
> Which works almost perfectly...:
> 
> Further, I needed to be able to import :
> 
> from Products.gvibDA.gvib.gvibExceptions import IntegrityError
> 
> 
> So I added the following code in gvibDA's __init__.py
> 
> from Products.PythonScripts.Utility import allow_module, allow_class
> from AccessControl import ModuleSecurityInfo, ClassSecurityInfo
> from Globals import InitializeClass
> 
> ModuleSecurityInfo('Products').declarePublic('gvibDA')
> ModuleSecurityInfo('Products.gvibDA').declarePublic('gvib')
> ModuleSecurityInfo('Products.gvibDA.gvib').declarePublic('gvibExceptions')
> ModuleSecurityInfo('Products.gvibDA.gvib.gvibExceptions').declarePublic('IntegrityError') 
> 
> 
> from gvib.gvibExceptions import IntegrityError
> 
> allow_class(IntegrityError)
> 
> 
> I get an 'Unauthorized: Formulator' error when accessing a script 
> beginning with
> 
> from Products.Formulator.Form import FormValidationError
> 
> from Products.gvibDA.gvib.gvibExceptions import IntegrityError
> 
> 
> 
> I suppose it has something to do with the creation of two instances of 
> ModuleSecurityInfo('Products') but have no idea how to correct the problem.
> 
> Any help would be appreciated.
> 
> 
> -- 
> 
> 
> Godefroid Chapelle
> 
> BubbleNet sprl
> rue Victor Horta, 18 / 202
> 1348 Louvain-la-Neuve
> Belgium
> 
> Tel + 32 (10) 459901
> Mob + 32 (477) 363942
> 
> TVA 467 093 008
> RC Niv 49849
> 
> 
> _______________________________________________
> Zope maillist  -  Zope@zope.org
> http://lists.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce
> http://lists.zope.org/mailman/listinfo/zope-dev )