Butanium

OWASP policy

May 4th, 2022 (edited)
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.72 KB | None | 0 0
  1. public static String sanitizeHTML(String html) {
  2.         PolicyFactory htmlSanitizer = Sanitizers.FORMATTING
  3.             .and(Sanitizers.LINKS)
  4.             .and(Sanitizers.BLOCKS)
  5.             .and(Sanitizers.IMAGES)
  6.             .and(Sanitizers.TABLES)
  7.             .and(new HtmlPolicyBuilder().allowElements(new ElementPolicy() {
  8.                 public String apply(String elementName, List<String> attrs) {
  9.                     // force a target="_blank" on all links
  10.                     if ("a".equals(elementName)) {
  11.                         attrs.add("target");
  12.                         attrs.add("_blank");
  13.                     }
  14.                     return elementName;
  15.                 }
  16.             }, "const", "var", "action", "keyword",
  17.                 "a",
  18.                 "track",
  19.                 "article",
  20.                 "aside",
  21.                 "header",
  22.                 "hgroup",
  23.                 "hr",
  24.                 "footer",
  25.                 "nav",
  26.                 "section",
  27.                 "summary",
  28.                 "details",
  29.                 "base",
  30.                 "basefont",
  31.                 "span",
  32.                 "title",
  33.                 "button",
  34.                 "datalist",
  35.                 "form",
  36.                 "keygen",
  37.                 "label",
  38.                 "input",
  39.                 "legend",
  40.                 "fieldset",
  41.                 "meter",
  42.                 "optgroup",
  43.                 "option",
  44.                 "select",
  45.                 "textarea",
  46.                 "abbr",
  47.                 "acronym",
  48.                 "address",
  49.                 "bdi",
  50.                 "bdo",
  51.                 "center",
  52.                 "cite",
  53.                 "del",
  54.                 "dfn",
  55.                 "kbd",
  56.                 "mark",
  57.                 "output",
  58.                 "progress",
  59.                 "q",
  60.                 "rp",
  61.                 "rt",
  62.                 "ruby",
  63.                 "samp",
  64.                 "wbr",
  65.                 "dd",
  66.                 "dir",
  67.                 "dl",
  68.                 "dt",
  69.                 "menu",
  70.                 "area",
  71.                 "figcaption",
  72.                 "figure",
  73.                 "map",
  74.                 "param",
  75.                 "source",
  76.                 "audio",
  77.                 "time",
  78.                 "video"
  79.             )
  80.                 .allowWithoutAttributes("span")
  81.                 .allowAttributes("class", "colspan").globally()
  82.                 .allowStandardUrlProtocols()
  83.                 .allowStyling()
  84.                 .allowUrlsInStyles(AttributePolicy.IDENTITY_ATTRIBUTE_POLICY)
  85.                 .requireRelNofollowOnLinks()
  86.                 .toFactory()
  87.             );
  88.         return htmlSanitizer.sanitize(html);
  89.     }
Add Comment
Please, Sign In to add comment