package edu.asu.spring.quadriga.utilities.impl; import org.jsoup.nodes.Attribute; import org.jsoup.nodes.Element; import org.jsoup.safety.Whitelist; /** * Custom Whitelist using {@link org.jsoup.safety.Whitelist} to validate encoded * images. * * @author Nischal Samji * */ public class ExtendedWhitelist extends Whitelist { public ExtendedWhitelist() { addTags("a", "b", "blockquote", "br", "cite", "code", "dd", "dl", "dt", "em", "i", "li", "ol", "p", "pre", "q", "small", "span", "strike", "strong", "sub", "sup", "u", "ul"); addAttributes("a", "href"); addAttributes("blockquote", "cite"); addAttributes("q", "cite"); addProtocols("a", "href", "ftp", "http", "https", "mailto"); addProtocols("blockquote", "cite", "http", "https"); addProtocols("cite", "cite", "http", "https"); addEnforcedAttribute("a", "rel", "nofollow"); addTags("img"); addAttributes("img", "align", "alt", "height", "src", "title", "width"); addProtocols("img", "src", "http", "https"); } @Override protected boolean isSafeAttribute(String tagName, Element el, Attribute attr) { return ("img".equals(tagName) && "src".equals(attr.getKey()) && attr.getValue().startsWith("data:image/png;base64")) || super.isSafeAttribute(tagName, el, attr); } public static Whitelist extendedWhiteListWithBase64() { return new ExtendedWhitelist(); } }