I think that would be great, create a jira ticket, attach a patch to it and we will check it out. I am writing a patch for the approach that I mentioned before, which will provide the same behavior using xml configuration, but having annotations as an option would be good.
musachy On Tue, Aug 12, 2008 at 10:22 AM, Relph,Brian <[EMAIL PROTECTED]> wrote: > > I wrote an annotation based parameters interceptor that extends the current > parameters interceptor while allowing you to configure the default "accept" > policy for an actions properties, as well as a per-property annotation that > can override the action's policy. This lets you use the same interceptor / > interceptor stack for all actions, and configure each individually to accept > or reject parameters. I would still like to add some regex support to the > action annotation. Would this interest you? > > Brian Relph > > -----Original Message----- > From: Musachy Barroso [mailto:[EMAIL PROTECTED] > Sent: Tuesday, August 12, 2008 8:53 AM > To: Struts Developers List > Subject: Re: ParameterFilterInterceptor security issue > > I forgot to say, that this would prevent all the OGNL expression tricks, > because the property name that is passed to MemberAccess to be checked, is > the actual property name, and not an expression. > > musachy > > On Tue, Aug 12, 2008 at 9:48 AM, Musachy Barroso <[EMAIL PROTECTED]> wrote: >> It seems to me like there is an elegant solution to this. We can >> rename StaticMemeberAccess to SecurityMemeberAccess, and in there not >> only block static member access, but also fields that can be >> configured using regular expressions. The params interceptor would >> just set these fields before binding the params. >> >> //OGNL parameter binding just went to #2 in my "must kill" list :) >> >> musachy >> >> On Tue, Aug 12, 2008 at 9:14 AM, Rene Gielen <[EMAIL PROTECTED]> wrote: >>> >>> Am Di, 12.08.2008, 14:20, schrieb Jeromy Evans: >>>> >>>> This relates to Musachy's recent proposal to remove OGNL entirely >>>> from the parameter-setting process. Which I think is a very good idea. >>>> >>> >>> Indeed removing OGNL for parameters would fix this issue, but even if >>> we would decide to do so this won't be trivial and might have many >>> side effects. >>> >>>> If I've understood correctly, currently there is no way to filter >>>> the parameter names, using regex or otherwise, other than to verify >>>> them use a whitelist of valid names. >>>> >>> >>> You can blacklist parameter names in the ParameterInterceptor ref, >>> including the possibility to define RegExp patterns. The latter one >>> is not possible for the ParameterFilterInterceptor right now, which I >>> think is a feature we should add. >>> >>> Jelmer, would you mind creating an Jira issue for that? >>> https://issues.apache.org/struts/ >>> >>> - Rene >>> >>>> jelmer wrote: >>>>> Hi all, >>>>> >>>>> I was looking into an easy way to prevent people binding on fields >>>>> they shouldn't be binding on. >>>>> >>>>> Say you have a User object, you do not want people to be able to >>>>> bind on the isAdmin property. >>>>> >>>>> Various people remommended using the ParameterFilterInterceptor for >>>>> this but it seems to be flatout broken >>>>> >>>>> When you configure an action like this >>>>> >>>>> <action name="test" class="com.webapp.action.TestAction"> >>>>> <interceptor-ref name="param-namevalue-filter"> >>>>> <param name="blocked">name</param> >>>>> </interceptor-ref> >>>>> <interceptor-ref name="params"/> </action> >>>>> >>>>> then this wont work : >>>>> >>>>> /test.action?name=myname >>>>> >>>>> but this does : >>>>> >>>>> /test.action?(name)=jelmer >>>>> >>>>> and so does this >>>>> >>>>> /test.action?((name))=jelmer >>>>> >>>>> And so on, infact it is impossible to block any parameter >>>>> effectively with the ParameterFilterInterceptor. >>>>> >>>>> >>>>> Btw. I am aware that there is also the excludeParams method on the >>>>> ParametersInterceptor that accepts a regexp, so theoretically you >>>>> could use this to block parameters effectively but it would be >>>>> extremely hard to write a correct regexp for it. Also I havent >>>>> found a way to configure both params interceptors in a >>>>> paramsPrepareParamsStack. This will only configure the first params >>>>> interceptor in the stack >>>>> >>>>> <interceptor-ref name="clientCrudStack"> >>>>> <param name="params.excludeParams">some pattern</param> >>>>> </interceptor-ref> >>>>> >>>>> Struts really seems to be lacking in this area. >>>>> >>>>> >>> >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [EMAIL PROTECTED] For >>> additional commands, e-mail: [EMAIL PROTECTED] >>> >>> >> >> >> >> -- >> "Hey you! Would you help me to carry the stone?" Pink Floyd >> > > > > -- > "Hey you! Would you help me to carry the stone?" Pink Floyd > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: > [EMAIL PROTECTED] > > ---------------------------------------------------------------------- > CONFIDENTIALITY NOTICE This message and any included attachments are from > Cerner Corporation and are intended only for the addressee. The information > contained in this message is confidential and may constitute inside or > non-public information under international, federal, or state securities > laws. Unauthorized forwarding, printing, copying, distribution, or use of > such information is strictly prohibited and may be unlawful. If you are not > the addressee, please promptly delete this message and notify the sender of > the delivery error by e-mail or you may call Cerner's corporate offices in > Kansas City, Missouri, U.S.A at (+1) (816)221-1024. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- "Hey you! Would you help me to carry the stone?" Pink Floyd --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]