IDEMPIERE-3980

This commit is contained in:
Carlos Ruiz 2019-06-10 18:19:31 +02:00
parent 1f701bbced
commit 0451bf0b4f
6 changed files with 24 additions and 4 deletions

View File

@ -9,5 +9,6 @@
<classpathentry kind="src" path="WEB-INF/src/"/> <classpathentry kind="src" path="WEB-INF/src/"/>
<classpathentry exported="true" kind="lib" path="WEB-INF/lib/ckez.jar"/> <classpathentry exported="true" kind="lib" path="WEB-INF/lib/ckez.jar"/>
<classpathentry exported="true" kind="lib" path="WEB-INF/lib/daisydiff.jar"/> <classpathentry exported="true" kind="lib" path="WEB-INF/lib/daisydiff.jar"/>
<classpathentry exported="true" kind="lib" path="WEB-INF/lib/owasp-java-html-sanitizer.jar"/>
<classpathentry kind="output" path="target/classes"/> <classpathentry kind="output" path="target/classes"/>
</classpath> </classpath>

View File

@ -55,7 +55,8 @@ Import-Package: groovy.transform.stc;version="2.4.7",
DynamicImport-Package: action.images DynamicImport-Package: action.images
Bundle-ClassPath: ., Bundle-ClassPath: .,
WEB-INF/lib/ckez.jar, WEB-INF/lib/ckez.jar,
WEB-INF/lib/daisydiff.jar WEB-INF/lib/daisydiff.jar,
WEB-INF/lib/owasp-java-html-sanitizer.jar
Export-Package: fi.jawsy.jawwa.zk.atmosphere, Export-Package: fi.jawsy.jawwa.zk.atmosphere,
metainfo.zk, metainfo.zk,
org.adempiere.webui, org.adempiere.webui,

View File

@ -194,7 +194,7 @@ public class WHtmlEditor extends WEditor implements ContextMenuListener
adwindowContent.hideBusyMask(); adwindowContent.hideBusyMask();
} }
if (!dialog.isCancelled()) { if (!dialog.isCancelled()) {
box.setContent(dialog.getText()); box.setContent(WTextEditorDialog.sanitize(dialog.getText()));
String newText = box.getContent(); String newText = box.getContent();
ValueChangeEvent changeEvent = new ValueChangeEvent(WHtmlEditor.this, WHtmlEditor.this.getColumnName(), oldValue, newText); ValueChangeEvent changeEvent = new ValueChangeEvent(WHtmlEditor.this, WHtmlEditor.this.getColumnName(), oldValue, newText);
WHtmlEditor.super.fireValueChange(changeEvent); WHtmlEditor.super.fireValueChange(changeEvent);

View File

@ -28,6 +28,8 @@ import org.adempiere.webui.component.Window;
import org.adempiere.webui.theme.ThemeManager; import org.adempiere.webui.theme.ThemeManager;
import org.adempiere.webui.util.ZKUpdateUtil; import org.adempiere.webui.util.ZKUpdateUtil;
import org.compiere.util.Language; import org.compiere.util.Language;
import org.owasp.html.PolicyFactory;
import org.owasp.html.Sanitizers;
import org.zkforge.ckez.CKeditor; import org.zkforge.ckez.CKeditor;
import org.zkoss.zk.au.out.AuScript; import org.zkoss.zk.au.out.AuScript;
import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.Event;
@ -48,7 +50,7 @@ public class WTextEditorDialog extends Window implements EventListener<Event>{
/** /**
* *
*/ */
private static final long serialVersionUID = 1188165765430615546L; private static final long serialVersionUID = -1857623453350849161L;
private boolean editable; private boolean editable;
private int maxSize; private int maxSize;
@ -186,7 +188,7 @@ public class WTextEditorDialog extends Window implements EventListener<Event>{
} }
public void onEditorCallback(Event event) { public void onEditorCallback(Event event) {
text = (String) event.getData(); text = sanitize((String) event.getData());
detach(); detach();
} }
@ -264,4 +266,14 @@ public class WTextEditorDialog extends Window implements EventListener<Event>{
return text; return text;
} }
public static String sanitize(String untrustedHTML) {
final PolicyFactory policy = Sanitizers.BLOCKS
.and(Sanitizers.FORMATTING)
.and(Sanitizers.IMAGES)
.and(Sanitizers.LINKS)
.and(Sanitizers.STYLES)
.and(Sanitizers.TABLES);
return policy.sanitize(untrustedHTML);
}
} }

View File

@ -35,6 +35,7 @@ bin.includes = META-INF/,\
pdf.js/,\ pdf.js/,\
WEB-INF/lib/ckez.jar,\ WEB-INF/lib/ckez.jar,\
WEB-INF/lib/daisydiff.jar,\ WEB-INF/lib/daisydiff.jar,\
WEB-INF/lib/owasp-java-html-sanitizer.jar,\
. .
src.includes = WEB-INF/tld/,\ src.includes = WEB-INF/tld/,\
WEB-INF/web.xml,\ WEB-INF/web.xml,\

View File

@ -62,6 +62,11 @@
<artifactId>ckez</artifactId> <artifactId>ckez</artifactId>
<version>4.7.0.0</version> <version>4.7.0.0</version>
</artifactItem> </artifactItem>
<artifactItem>
<groupId>com.googlecode.owasp-java-html-sanitizer</groupId>
<artifactId>owasp-java-html-sanitizer</artifactId>
<version>20190503.1</version>
</artifactItem>
</artifactItems> </artifactItems>
<outputDirectory>WEB-INF/lib</outputDirectory> <outputDirectory>WEB-INF/lib</outputDirectory>
<stripVersion>true</stripVersion> <stripVersion>true</stripVersion>