Author: jleroux
Date: Wed May 15 16:18:01 2019
New Revision: 1859297
URL: http://svn.apache.org/viewvc?rev=1859297&view=rev
Log:
Improved: no functional changes, only formatting
While working on OFBIZ-5254 after reopening it.
Uses the max width (120) makes things easier to read IMO
I also made a slight non functional change w/ seekSegmentTime in
checkStringForHtmlStrictNone
Modified:
ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilCodec.java
Modified:
ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilCodec.java
URL:
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilCodec.java?rev=1859297&r1=1859296&r2=1859297&view=diff
==============================================================================
---
ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilCodec.java
(original)
+++
ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/UtilCodec.java
Wed May 15 16:18:01 2019
@@ -174,8 +174,10 @@ public class UtilCodec {
// Given as an example based on rendering cmssite as it was before
using the sanitizer.
// To use the PERMISSIVE_POLICY set sanitizer.permissive.policy to
true.
- // Note that I was unable to render </html> and </body>. I guess
because <html> and <body> are not sanitized in 1st place (else the sanitizer
makes some damages I found)
- // You might even want to adapt the PERMISSIVE_POLICY to your needs...
Be sure to check https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
before...
+ // Note that I was unable to render </html> and </body>. I guess
because <html> and <body>
+ // are not sanitized in 1st place (else the sanitizer makes some
damages I found)
+ // You might even want to adapt the PERMISSIVE_POLICY to your needs...
+ // Be sure to check
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet before...
// And
https://github.com/OWASP/java-html-sanitizer/blob/master/docs/getting_started.md
for examples.
// If you want another example:
https://android.googlesource.com/platform/packages/apps/UnifiedEmail/+/ec0fa48/src/com/android/mail/utils/HtmlSanitizer.java
public static final PolicyFactory PERMISSIVE_POLICY = new
HtmlPolicyBuilder()
@@ -188,7 +190,8 @@ public class UtilCodec {
// This is the PolicyFactory used for the Birt Report Builder usage
feature. ("FLEXIBLE_REPORT" contentTypeId)
// It allows to use the OOTB Birt Report Builder example.
- // You might need to enhance it for your needs (when using a new
REPORT_MASTER) but normally you should not. See PERMISSIVE_POLICY above for
documentation and examples
+ // You might need to enhance it for your needs (when using a new
REPORT_MASTER) but normally you should not.
+ // See PERMISSIVE_POLICY above for documentation and examples
public static final PolicyFactory BIRT_FLEXIBLE_REPORT_POLICY = new
HtmlPolicyBuilder()
.allowWithoutAttributes("html", "body")
.allowElements("form", "div", "span", "table", "tr", "td",
"input", "textarea", "label", "select", "option")
@@ -198,7 +201,8 @@ public class UtilCodec {
.allowAttributes("cols", "rows").onElements("textarea")
.allowAttributes("class").onElements("td")
.allowAttributes("method").onElements("form")
- .allowAttributes("accept", "action", "accept-charset",
"autocomplete", "enctype", "method", "name", "novalidate",
"target").onElements("form")
+ .allowAttributes("accept", "action", "accept-charset",
"autocomplete", "enctype", "method",
+ "name", "novalidate", "target").onElements("form")
.toFactory();
}
@@ -372,6 +376,8 @@ public class UtilCodec {
* Does not allow various characters (after canonicalization), including
* "<", ">", "&" (if not followed by a space), and "%" (if not
* followed by a space).
+ *
+ * Also does not allow js events as in OFBIZ-10054
*
* @param value
* @param errorMessageList
@@ -386,8 +392,10 @@ public class UtilCodec {
value = canonicalize(value, true);
} catch (IntrusionException e) {
// NOTE: using different log and user targeted error messages to
allow the end-user message to be less technical
- Debug.logError("Canonicalization (format consistency, character
escaping that is mixed or double, etc) error for attribute named [" + valueName
+ "], String [" + value + "]: " + e.toString(), module);
- errorMessageList.add("In field [" + valueName + "] found character
escaping (mixed or double) that is not allowed or other format consistency
error: " + e.toString());
+ Debug.logError("Canonicalization (format consistency, character
escaping that is mixed or double, etc) error for attribute named ["
+ + valueName + "], String [" + value + "]: " + e.toString(),
module);
+ errorMessageList.add("In field [" + valueName
+ + "] found character escaping (mixed or double) that is
not allowed or other format consistency error: " + e.toString());
}
// check for "<", ">"
@@ -397,8 +405,8 @@ public class UtilCodec {
// check for js events
String onEvent = "on" + StringUtils.substringBetween(value, " on",
"=");
- boolean seekSegmentTime = value.contains("seekSegmentTime");
- if (jsEventList.stream().anyMatch(str ->
StringUtils.containsIgnoreCase(str, onEvent)) || seekSegmentTime) {
+ if (jsEventList.stream().anyMatch(str ->
StringUtils.containsIgnoreCase(str, onEvent))
+ || value.contains("seekSegmentTime")) {
errorMessageList.add("In field [" + valueName + "] js events are
not allowed.");
}
@@ -412,7 +420,8 @@ public class UtilCodec {
}
/**
- * A simple Map wrapper class that will do HTML encoding. To be used for
passing a Map to something that will expand Strings with it as a context, etc.
+ * A simple Map wrapper class that will do HTML encoding.
+ * To be used for passing a Map to something that will expand Strings with
it as a context, etc.
*/
public static class HtmlEncodingMapWrapper<K> implements Map<K, Object> {
public static <K> HtmlEncodingMapWrapper<K>
getHtmlEncodingMapWrapper(Map<K, Object> mapToWrap, SimpleEncoder encoder) {