I forgot to say about following block in MYStrutsPrepareFilter.java which is new and I added recently (so please copy the whole new MYStrutsPrepareFilter.java) :
> if(null != actionContext) { > ValueStack stack = actionContext.getValueStack(); > stack.setValue("#request['MYUtils']", MYUtils); > } It avoids null pointer exception. Please reply back to me the `exception stack trace` if you encounter any. IMPORTANT NOTE: To keep security, your MYUtils class should return only and only necessary info (not less not more) in primitive types like string , boolean , int , etc as much as possible rather than sensitive objects. For example, following get method wake ups currently fixed security issues: public class MYUtils {... public ActionContext getActionContext() { return ActionContext.getContext(); }...} On 7/22/2017 1:27 PM, Yasser Zamani wrote: > Sorry! My previous code has sent via my mobile which has a few typo > errors because of issues with copy/pase :( > > Now, at my PC, I tested following configuration which works well :) > > 1. MYStrutsPrepareFilter.java > > ********************************************* > package me.zamani.yasser.ww_convention.utils; > > import java.io.IOException; > > import javax.servlet.Filter; > import javax.servlet.FilterChain; > import javax.servlet.FilterConfig; > import javax.servlet.ServletException; > import javax.servlet.ServletRequest; > import javax.servlet.ServletResponse; > import javax.servlet.http.HttpServletRequest; > > import org.apache.struts2.StrutsStatics; > import com.opensymphony.xwork2.ActionContext; > import com.opensymphony.xwork2.util.ValueStack; > > /** > * @author zamani > * > */ > public class MYStrutsPrepareFilter implements Filter { > > private MYUtils MYUtils; > > public void init(FilterConfig filterConfig) throws ServletException { > MYUtils = new MYUtils(); > } > > public void doFilter(ServletRequest req, ServletResponse res, > FilterChain chain) > throws IOException, ServletException { > > ActionContext actionContext = ActionContext.getContext(); > if(null != actionContext) { > ValueStack stack = actionContext.getValueStack(); > stack.setValue("#request['MYUtils']", MYUtils); > } > > chain.doFilter(req, res); > } > > public void destroy() { > MYUtils = null; > } > > > public class MYUtils { > public boolean isUserInRole (String user) { > HttpServletRequest httpsr = ((HttpServletRequest) > ActionContext.getContext() > .get(StrutsStatics.HTTP_REQUEST)); > return httpsr.isUserInRole(user); > } > } > } > ********************************************************** > > 2. web.xml > > ********************************************************** > <filter> > <filter-name>struts2prepare</filter-name> > > <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareFilter</filter-class> > </filter> > > <filter> > <filter-name>MYStrutsPrepareFilter</filter-name> > > <filter-class>me.zamani.yasser.ww_convention.utils.MYStrutsPrepareFilter</filter-class> > </filter> > > <filter> > <filter-name>struts2execute</filter-name> > > <filter-class>org.apache.struts2.dispatcher.filter.StrutsExecuteFilter</filter-class> > </filter> > > <filter-mapping> > <filter-name>struts2prepare</filter-name> > <url-pattern>/*</url-pattern> > </filter-mapping> > > <filter-mapping> > <filter-name>MYStrutsPrepareFilter</filter-name> > <url-pattern>/*</url-pattern> > </filter-mapping> > > <filter-mapping> > <filter-name>struts2execute</filter-name> > <url-pattern>/*</url-pattern> > </filter-mapping> > ************************************************************** > > 3. hello.jsp > > ************************************************************** > <s:if test='#request["MYUtils"].isUserInRole("UserAdmin")'> > you are UserAdmin > </s:if> > <s:else> > you are not UserAdmin > </s:else> > ************************************************************** > > Sincerely Yours, > Yasser. > > On 7/22/2017 2:56 AM, Deborah White wrote: >> And the jsp doesn't seem to like this syntax for some reason. >> >> -----Original Message----- >> From: Yasser Zamani [mailto:yasser.zam...@live.com] >> Sent: Friday, July 21, 2017 1:04 PM >> To: Struts Developers List <dev@struts.apache.org> >> Subject: Re: FW: [jira] [Comment Edited] (WW-4815) Migrating Struts 2.3.16.3 >> to 2.3.32 >> >> That is just an example. For your need, in more detail, you should try >> something like these: >> >> 1. Add following method to class MyUtil: >> >> public boolean isUserInRole (String user) { >> HttpServletRequest httpsr = ((HttpServletRequest) >> ActionContext.getContext() >> .get(StrutsStatics.HTTP_REQUEST)); return >> httpsr.isUserInRole (user); } >> >> 2. Your struts filters in web.xml should looks like: >> >> <filter> >> <filter-name>struts-prepare</filter-name> >> >> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class> >> </filter> >> >> <filter> >> <filter-name> MYStrutsPrepareFilter</filter-name> >> <filter-class>my.package. MYStrutsPrepareFilter</filter-class> >> </filter> >> >> <filter> >> <filter-name>struts-execute</filter-name> >> >> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class> >> </filter> >> >> 3. Finally find and replace all of >> >> <s:if test='request.isUserInRole("UserAdmin")' > >> >> With >> >> <s:if test=' #request['MYUtils']. .isUserInRole("UserAdmin")' > >> >> I think something like these resolve your issue :) please try and let me >> know. >> >> Deborah White <deborah.wh...@doj.ca.gov> نوشت: >> >>> This is what I currently have in my jsp: >>> <s:if test='request.isUserInRole("UserAdmin")' > >>> >>> Where would I put >>> "#request['MYUtils'].requestURI? >>> >>> -----Original Message----- >>> From: Yasser Zamani [mailto:yasser.zam...@live.com] >>> Sent: Friday, July 21, 2017 10:53 AM >>> To: Struts Developers List <dev@struts.apache.org> >>> Subject: Re: FW: [jira] [Comment Edited] (WW-4815) Migrating Struts >>> 2.3.16.3 to 2.3.32 >>> >>> You are welcome :) In this solution, by ognl, you only access the MyUtil >>> object and you add what you need from excluded packages into MyUtil class >>> as java getters. While MyUtil is not in excluded packages, so, you can get >>> what you need from excluded packages via ognl then it. >>> >>> Deborah White <deborah.wh...@doj.ca.gov> نوشت: >>> >>>> Sorry, as I said I'm new. Will this allow access to the excluded packages >>>> (ognl)? >>>> >>>> -----Original Message----- >>>> From: Yasser Zamani [mailto:yasser.zam...@live.com] >>>> Sent: Thursday, July 20, 2017 10:55 PM >>>> To: Struts Developers List <dev@struts.apache.org> >>>> Subject: Re: FW: [jira] [Comment Edited] (WW-4815) Migrating Struts >>>> 2.3.16.3 to 2.3.32 >>>> >>>> Hi there, welcome to dev list :) >>>> >>>> Do you need access to excluded packages in your JSPs? I had similar >>>> issue and you can see my solution at [1]. I did not need to rewrite >>>> any thing and a find/replace did all needed changes. Please review my >>>> solution if also resolves your one. If not, please feel free continue >>>> here for a solution :) >>>> >>>> [1] https://github.com/apache/struts/pull/125#issuecomment-293608411 >>>> >>>> On 7/21/2017 2:38 AM, Deborah White wrote: >>>>> Please see the content below. Fairly new to Struts and I'm guessing >>>>> someone out there has been through this. Any help would be appreciated. >>>>> >>>>> -----Original Message----- >>>>> From: Lukasz Lenart (JIRA) [mailto:j...@apache.org] >>>>> Sent: Thursday, July 13, 2017 9:32 PM >>>>> To: Deborah White <deborah.wh...@doj.ca.gov> >>>>> Subject: [jira] [Comment Edited] (WW-4815) Migrating Struts 2.3.16.3 >>>>> to 2.3.32 >>>>> >>>>> >>>>> [ >>>>> https://issues.apache.org/jira/browse/WW-4815?page=com.atlassian.jira. >>>>> >>>>> plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=160868 >>>>> 3 >>>>> 2#comment-16086832 ] >>>>> >>>>> Lukasz Lenart edited comment on WW-4815 at 7/14/17 4:31 AM: >>>>> ------------------------------------------------------------ >>>>> >>>>> The best place to ask such question is to subscribe to the User >>>>> Mailing list as there are more eyes to help you >>>>> http://struts.apache.org/mail.html >>>>> >>>>> And to answer your question: there is no safe way to modify the >>>>> exclusion, I would rather figure out in which expression you use this >>>>> class and move the logic to an action. >>>>> >>>>> >>>>> was (Author: lukaszlenart): >>>>> The best place to ask such question is to subscribe to the User >>>>> Mailing list as there are more eyes to help you >>>>> http://struts.apache.org/mail.html >>>>> >>>>> And to answer your question: there is no safe way to modify the >>>>> exclusion, I would rather figure in which expression you use this class >>>>> and move the logic to an action. >>>>> >>>>>> Migrating Struts 2.3.16.3 to 2.3.32 >>>>>> ----------------------------------- >>>>>> >>>>>> Key: WW-4815 >>>>>> URL: https://issues.apache.org/jira/browse/WW-4815 >>>>>> Project: Struts 2 >>>>>> Issue Type: Temp >>>>>> Components: Core >>>>>> Affects Versions: 2.3.16.3 >>>>>> Reporter: Deborah White >>>>>> Fix For: 2.3.32 >>>>>> >>>>>> >>>>>> I need some assistance and am hoping you can provide some insight. I >>>>>> know this is probably not the place to do this, but I'm not finding >>>>>> answers elsewhere. I am updating from 2.3.16.3 to 2.3.32 due to the >>>>>> vulnerability. The problem is that the excluded classes in the >>>>>> struts-default.xml are being used by my application and I certainly do >>>>>> not have time to do a rewrite. >>>>>> This is the Warning I get and then my application does not run as it >>>>>> should because it seems it is not forwarding the roles: >>>>>> WARN [com.opensymphony.xwork2.ognl.SecurityMemberAccess] Package of >>>>>> target [org.apache.struts2.dispatcher.StrutsRequestWrapper@42f3b47f] or >>>>>> package of member [public boolean >>>>>> javax.servlet.http.HttpServletRequestWrapper.isUserInRole(java.lang.String)] >>>>>> are excluded! >>>>>> I need to know how I can safely modify the struts-default.xml and still >>>>>> have the fix for the vulnerability. Also, if there is something I can >>>>>> instead include in my struts.xml file that would override, that would be >>>>>> better. Thank you. >>>>> >>>>> >>>>> >>>>> -- >>>>> This message was sent by Atlassian JIRA >>>>> (v6.4.14#64029) >>>>> >>>>> >>>>> CONFIDENTIALITY NOTICE: This communication with its contents may contain >>>>> confidential and/or legally privileged information. It is solely for the >>>>> use of the intended recipient(s). Unauthorized interception, review, use >>>>> or disclosure is prohibited and may violate applicable laws including the >>>>> Electronic Communications Privacy Act. If you are not the intended >>>>> recipient, please contact the sender and destroy all copies of the >>>>> communication. >>>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org For >>>> additional commands, e-mail: dev-h...@struts.apache.org >>>> >>>> >>>> CONFIDENTIALITY NOTICE: This communication with its contents may contain >>>> confidential and/or legally privileged information. It is solely for the >>>> use of the intended recipient(s). Unauthorized interception, review, use >>>> or disclosure is prohibited and may violate applicable laws including the >>>> Electronic Communications Privacy Act. If you are not the intended >>>> recipient, please contact the sender and destroy all copies of the >>>> communication. >>> B >>> KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKCB >>> [ X ܚX KK[XZ[ ] ][ X ܚX P ]˘\X K ܙ B ܈Y][ۘ[ [X[ K[XZ[ ] Z[ ]˘\X K >>> ܙ B B >>> >>> CONFIDENTIALITY NOTICE: This communication with its contents may contain >>> confidential and/or legally privileged information. It is solely for the >>> use of the intended recipient(s). Unauthorized interception, review, use or >>> disclosure is prohibited and may violate applicable laws including the >>> Electronic Communications Privacy Act. If you are not the intended >>> recipient, please contact the sender and destroy all copies of the >>> communication. >> >> CONFIDENTIALITY NOTICE: This communication with its contents may contain >> confidential and/or legally privileged information. It is solely for the use >> of the intended recipient(s). Unauthorized interception, review, use or >> disclosure is prohibited and may violate applicable laws including the >> Electronic Communications Privacy Act. If you are not the intended >> recipient, please contact the sender and destroy all copies of the >> communication. >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org >> For additional commands, e-mail: dev-h...@struts.apache.org >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org > For additional commands, e-mail: dev-h...@struts.apache.org >