package com.tcm.training.admin.common.xss; import org.jsoup.Jsoup; import org.jsoup.safety.Safelist; public final class XssCleaner { private static final Safelist RICH_TEXT_SAFELIST = Safelist.relaxed() .addTags("span") .addAttributes(":all", "style", "class") .addAttributes("img", "width", "height", "alt") .addProtocols("img", "src", "http", "https", "data"); private XssCleaner() { } public static String cleanPlainText(String value) { if (value == null) { return null; } return Jsoup.clean(value, Safelist.none()).trim(); } public static String cleanRichText(String value) { if (value == null) { return null; } return Jsoup.clean(value, RICH_TEXT_SAFELIST).trim(); } public static boolean containsRiskyPlainText(String value) { if (value == null) { return false; } return !value.equals(cleanPlainText(value)); } }