public class CookieInterceptor extends AbstractInterceptor
The aim of this interceptor is to set values in the stack/action based on cookie name/value of interest.
If an asterisk is present in cookiesName parameter, it will be assume that all cookies name are to be injected into struts' action, even though cookiesName is comma-separated by other values, e.g. (cookie1,*,cookie2).
If cookiesName is left empty it will assume that no cookie will be injected into Struts' action.
If an asterisk is present in cookiesValue parameter, it will assume that all cookies name irrespective of its value will be injected into Struts' action so long as the cookie name matches those specified in cookiesName parameter.
If cookiesValue is left empty it will assume that all cookie that match the cookieName parameter will be injected into Struts' action.
The action could implement CookiesAware
in order to have a Map
of filtered cookies set into it.
CookiesAware
.
<!-- This example will inject cookies named either 'cookie1' or 'cookie2' whose value could be either 'cookie1value' or 'cookie2value' into Struts' action. --> <action ... > <interceptor-ref name="cookie"> <param name="cookiesName">cookie1, cookie2</param> <param name="cookiesValue">cookie1value, cookie2value</param> </interceptor-ref> .... </action> <!-- This example will inject cookies named either 'cookie1' or 'cookie2' regardless of their value into Struts' action. --> <action ... > <interceptor-ref name="cookie"> <param name="cookiesName">cookie1, cookie2</param> <param name="cookiesValue">*</param> <interceptor-ref> ... </action> <!-- This example will inject cookies named either 'cookie1' with value 'cookie1value' or 'cookie2' with value 'cookie2value' into Struts' action. --> <action ... > <interceptor-ref name="cookie"> <param name="cookiesName">cookie1</param> <param name="cookiesValue">cookie1value</param> </interceptor-ref> <interceptor-ref name="cookie"> <param name="cookiesName"<cookie2</param> <param name="cookiesValue">cookie2value</param> </interceptor-ref> .... </action> <!-- This example will inject any cookies regardless of its value into Struts' action. --> <action ... > <interceptor-ref name="cookie"> <param name="cookiesName">*</param> <param name="cookiesValue">*</param> </interceptor-ref> ... </action>
CookiesAware
,
Serialized FormConstructor and Description |
---|
CookieInterceptor() |
Modifier and Type | Method and Description |
---|---|
protected void |
injectIntoCookiesAwareAction(Object action,
Map<String,String> cookiesMap)
|
String |
intercept(ActionInvocation invocation)
Override to handle interception
|
protected boolean |
isAcceptableName(String name)
Checks if name of Cookie doesn't contain vulnerable code
|
protected boolean |
isAccepted(String name)
Checks if name/value of Cookie is acceptable
|
protected boolean |
isExcluded(String name)
Checks if name/value of Cookie is excluded
|
protected void |
populateCookieValueIntoStack(String cookieName,
String cookieValue,
Map<String,String> cookiesMap,
ValueStack stack)
Hook that populate cookie value into value stack (hence the action)
if the criteria is satisfied (if the cookie value matches with those configured).
|
void |
setAcceptCookieNames(String commaDelimitedPattern)
Set the
acceptCookieNames pattern of allowed names of cookies
to protect against remote command execution vulnerability. |
void |
setAcceptedPatternsChecker(AcceptedPatternsChecker acceptedPatternsChecker) |
void |
setCookiesName(String cookiesName) |
void |
setCookiesValue(String cookiesValue) |
void |
setExcludedPatternsChecker(ExcludedPatternsChecker excludedPatternsChecker) |
destroy, init
public void setExcludedPatternsChecker(ExcludedPatternsChecker excludedPatternsChecker)
public void setAcceptedPatternsChecker(AcceptedPatternsChecker acceptedPatternsChecker)
public void setCookiesName(String cookiesName)
cookiesName
- the cookiesName
which if matched will allow the cookie
to be injected into action, could be comma-separated string.public void setCookiesValue(String cookiesValue)
cookiesValue
- the cookiesValue
which if matched (together with matching
cookiesName) will caused the cookie to be injected into action, could be
comma-separated string.public void setAcceptCookieNames(String commaDelimitedPattern)
acceptCookieNames
pattern of allowed names of cookies
to protect against remote command execution vulnerability.commaDelimitedPattern
- is used to check cookie name against, can set of comma delimited patternspublic String intercept(ActionInvocation invocation) throws Exception
AbstractInterceptor
intercept
in interface Interceptor
intercept
in class AbstractInterceptor
invocation
- the action invocationActionInvocation.invoke()
, or from the interceptor itself.Exception
- any system-level error, as defined in Action.execute()
.protected boolean isAcceptableName(String name)
name
- of Cookieprotected boolean isAccepted(String name)
name
- of Cookieprotected boolean isExcluded(String name)
name
- of Cookieprotected void populateCookieValueIntoStack(String cookieName, String cookieValue, Map<String,String> cookiesMap, ValueStack stack)
cookieName
- cookie namecookieValue
- cookie valuecookiesMap
- map of cookiesstack
- value stackCopyright © 2000–2020 Apache Software Foundation. All rights reserved.