[ https://issues.apache.org/jira/browse/WW-5115?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17271198#comment-17271198 ]
Greg Huber edited comment on WW-5115 at 1/25/21, 9:45 AM: ---------------------------------------------------------- How then does the ParametersInterceptor ExcludedPatternsChecker.IsExcluded differentiate between logIgnoredParameters/logExcludedParameters parameter as there is no setting other than the *new* log field? Create and IgnoredPatternsChecker ? {code:java} private IgnoredPatternsChecker ignoredPatterns; protected boolean isIgnored(String paramName) { IgnoredPatternsChecker.IsIgnored result = ignoredPatterns.isIgnored(paramName); if (result.isIgnnored()) { if (devMode && logIgnoredParameters) { // warn only when in devMode LOG.warn("Parameter [{}] matches excluded pattern [{}]! See Accepted / Excluded / Ignored patterns at\n" + "https://struts.apache.org/security/#accepted--excluded-patterns", paramName, result.getIgnoredPattern()); } else { LOG.debug("Parameter [{}] matches excluded/ignored pattern [{}]!", paramName, result.getIgnoredPattern()); } return true; } return false; } protected boolean acceptableName(String name) { boolean accepted = isWithinLengthLimit(name) && !isIgnored(name) && !isExcluded(name) && isAccepted(name); if (devMode && accepted) { // notify only when in devMode LOG.debug("Parameter [{}] was accepted and will be appended to action!", name); } return accepted; } {code} was (Author: gregh99): How then does the ParametersInterceptor ExcludedPatternsChecker.IsExcluded differentiate between logIgnoredParameters/logExcludedParameters parameter as there is no setting other than the *new* log field? Create and IgnoredPatternsChecker ? {code:java} private IgnoredPatternsChecker ignoredPatterns; protected boolean isIgnored(String paramName) { IgnoredPatternsChecker.IsIgnored result = ignoredPatterns.isExcluded(paramName); if (result.isIgnnored()) { if (devMode && logIgnoredParameters) { // warn only when in devMode LOG.warn("Parameter [{}] matches excluded pattern [{}]! See Accepted / Excluded / Ignored patterns at\n" + "https://struts.apache.org/security/#accepted--excluded-patterns", paramName, result.getIgnoredPattern()); } else { LOG.debug("Parameter [{}] matches excluded/ignored pattern [{}]!", paramName, result.getIgnoredPattern()); } return true; } return false; } protected boolean acceptableName(String name) { boolean accepted = isWithinLengthLimit(name) && !isIgnored(name) && !isExcluded(name) && isAccepted(name); if (devMode && accepted) { // notify only when in devMode LOG.debug("Parameter [{}] was accepted and will be appended to action!", name); } return accepted; } {code} > Reduce logging for DMI excluded parameters > ------------------------------------------- > > Key: WW-5115 > URL: https://issues.apache.org/jira/browse/WW-5115 > Project: Struts 2 > Issue Type: Improvement > Components: Core > Affects Versions: 2.5.25 > Reporter: Greg Huber > Assignee: Greg Huber > Priority: Minor > Fix For: 2.5.27 > > Time Spent: 0.5h > Remaining Estimate: 0h > > There are unnecessary log warning when DMI is enabled, from the > ParametersInterceptor. > WARN com.opensymphony.xwork2.interceptor.ParametersInterceptor > ParametersInterceptor:isAccepted - Parameter [action:myAction!save] didn't > match accepted pattern > [[\w+((\.\w+)|(\[\d+])|(\(\d+\))|(\['(\w|[\u4e00-\u9fa5])+'])|(\('(\w|[\u4e00-\u9fa5])+'\)))*]]! > See Accepted / Excluded patterns at > https://struts.apache.org/security/#accepted--excluded-patterns > eg the property 'action:myAction!save' should not be considered as a > bean/property parameter, as its used as part of DMI to submit the form. > Any property which matches the DMI method invocation "^(action|method):.*" > needs to be silently ignored and not logged in devMode=true. > DMI_AWARE_ACCEPTED_PATTERNS can also be dropped from > DefaultAcceptedPatternsChecker as the DMI action|method would never be a form > property. > public static final String[] DMI_AWARE_ACCEPTED_PATTERNS = { > > "\\w+([:]?\\w+)?((\\.\\w+)|(\\[\\d+])|(\\(\\d+\\))|(\\['(\\w|[\\u4e00-\\u9fa5])+'])|(\\('(\\w|[\\u4e00-\\u9fa5])+'\\)))*([!]?\\w+)?" > }; -- This message was sent by Atlassian Jira (v8.3.4#803005)