Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用owasp java html清理器提取链接_Java_Owasp_Html Sanitizing - Fatal编程技术网

使用owasp java html清理器提取链接

使用owasp java html清理器提取链接,java,owasp,html-sanitizing,Java,Owasp,Html Sanitizing,我计划使用owasp java html净化程序对用户生成的html执行一些任务 我想从html字符串中提取URL列表 我还想确保所有链接的目标都设置为_blank,这似乎类似于HtmlPolicyBuilder.requirerelnofollowinlinks配置。完成 您可以使用属性策略,这样就不需要执行href.equals。。。或在attrs数组的内容上循环。你允许目标在别处吗?如果是这样的话,你可能会有两个目标,而这两个目标可能不是你想要的。你的问题是什么,顺便问一下?已经有一段时间

我计划使用owasp java html净化程序对用户生成的html执行一些任务

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

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


您可以使用属性策略,这样就不需要执行href.equals。。。或在attrs数组的内容上循环。你允许目标在别处吗?如果是这样的话,你可能会有两个目标,而这两个目标可能不是你想要的。你的问题是什么,顺便问一下?已经有一段时间了,但我认为这个问题已经摆在人力资源部面前了,我问了这个问题之后就明白了。如果您使用属性策略充实出一个答案,我将接受它作为答案。
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();
.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")
.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")