【问题标题】:need help in html::tagFilter在 html::tagFilter 中需要帮助
【发布时间】:2013-07-17 17:24:24
【问题描述】:

我在perl中写了一个这样的过滤器

my $tf = HTML::TagFilter->new(
            allow => {
                img => { src => [] },
                b   => { all => [] },
                i   => { all => [] },
                em  => { all => [] },
                u   => { all => [] },
                s   => { all => [] }
            }
        );

$message_body = $tf->filter($message_body);

现在我需要从这个过滤器做的是允许给定的标签,并让 img 允许 src 属性。代码给出了很好的结果,除了像 <img src="cid:img.png" alt="Smiley face"> 这样的标签它只返回 <img> 而不是 <img src="sid:imp.png"> 这是我想要的,这里有人知道为什么吗?!

【问题讨论】:

    标签: perl html-parsing


    【解决方案1】:

    src 属性未通过的原因是模块的跨站点脚本保护。 cid:img.png 值作为无效 URL 被拒绝,因此该属性被删除。

    解决此问题的最简洁方法是扩展有效协议列表以包括 cid,如下所示:

    my @protocols = $tf->xss_permitted_protocols;
    push @protocols, 'cid';
    $tf->xss_permitted_protocols(@protocols);
    
    $message_body = $tf->filter($message_body);
    

    如果您在创建HTML::TagFilter 对象时设置了log_rejects => 1,那么您可以检查$tf->report 返回的值以查看模块拒绝HTML 的每个组件的原因。

    【讨论】:

      【解决方案2】:

      您需要将skip_xss_protection 设置为1:

      #!/usr/bin/perl
      
      use strict;
      use warnings;
      use HTML::TagFilter;
      
      my $tf = HTML::TagFilter->new(
                  allow => {
                      img => {src => []},
                      b   => { all => [] },
                      i   => { all => [] },
                      em  => { all => [] },
                      u   => { all => [] },
                      s   => { all => [] }
                  },
                  skip_xss_protection => 1,
              );
      
      my $html = qq{<img src="cid:img.png" alt="Smiley face">};
      
      $html = $tf->filter($html);
      print $html;
      

      打印:

      <img src="cid:img.png">
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多