【问题标题】:Link extraction using owasp-java-html-sanitizer使用 owasp-java-html-sanitizer 提取链接
【发布时间】:2012-07-07 07:02:28
【问题描述】:

我打算使用 owasp-java-html-sanitizer 对用户生成的 html 执行一些任务。

我想从 html 字符串中提取 URL 列表。

我还想确保所有链接的目标都设置为“_blank”,这似乎类似于HtmlPolicyBuilder.requireRelNofollowOnLinks 配置。 (完成)


PolicyFactory linkRewrite = new HtmlPolicyBuilder().allowAttributes("href").onElements("a")
      .requireRelNofollowOnLinks().allowElements(new ElementPolicy() {
        public String apply(String elementName, List<String> attrs) {
          attrs.add("target");
          attrs.add("_blank");
          return "a";
        }
      }, "a").toFactory();

这会将target="_blank" 添加到链接中,不确定它是实现它的最佳方式。

这也会提取 URL:

.allowElements(new ElementPolicy() {
        public String apply(String elementName, List<String> attrs) {
          for (int i = 0, n = attrs.size(); i < n; i += 2) {
            if ("href".equals(attrs.get(i))) {
              urls.add(attrs.get(i + 1));
              break;
            }
          }
          attrs.add("target");
          attrs.add("_blank");
          return elementName;
        }
      }, "a")

【问题讨论】:

  • 您可以使用属性策略,这样您就不需要执行"href".equals(...) 或循环遍历attrs 数组的内容。你在其他地方允许target 吗?如果是这样,您最终可能会得到两个可能不是您想要的目标。
  • 你的问题是什么,顺便说一句?
  • 已经有一段时间了,但我认为问题在hr 之前,一切都是我提出问题后的想法。如果您使用attribute policy 充实答案,我会接受它作为答案。

标签: java owasp html-sanitizing


【解决方案1】:
.allowElements(
   new ElementPolicy() {
     public String apply(String elementName, List<String> attrs) {
       // Make sure that all links open in new windows/tabs without
       // using <base target> which also affects unsanitized links.
       attrs.add("target");
       attrs.add("_blank");
       return elementName;
     }
   }, "a")
.allowAttributes("href").matching(
   new AttributePolicy() {
     public String apply(String elementName, String attributeName, String value) {
       // Collect all link URLs.
       urls.add(value);
       return value;
     }
   }).onElements("a")

【讨论】:

    猜你喜欢
    • 2017-04-09
    • 2015-12-27
    • 2014-08-03
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 2011-11-23
    • 2022-11-12
    • 2015-05-06
    相关资源
    最近更新 更多