用于URL编码的HTML :: ENTITIES

时间:2015-03-04 16:38:00

标签: perl cgi url-encoding

我不确定此代码有什么问题,我正在尝试从URL中删除特殊字符 例如: - http://google.com/>"<script>alert(2121)</script>

这会触发javscript,我想从URL编码'&lt;&gt;&amp;'' 所以这是我试图执行的代码。

my $cgi = CGI->new();
use HTML::Entities;
sub escapeParams {
       my( $self ) = shift;

        my @params  = $self->query->param('<>&"');

        foreach my $param ( @params ) {
            #    $self->query->param( $param, HTML::Entities::encode( $self->query->param( $param ) ) );
            $self->query->param( HTML::Entities::encode($param), HTML::Entities::encode( $self->query->param( $param ) ) );
            print $self->query->param( $param );
        }

}
escapeParams($cgi);

1 个答案:

答案 0 :(得分:3)

现在如何输出HTML?说你有

print(qq{<a href="$link_url">$link_text</a>\n});

将其替换为

use CGI qw( escapeHTML );

my $link_url_html  = escapeHTML($link_url);
my $link_text_html = escapeHTML($link_text);

print(qq{<a href="$link_url_html">$link_text_html</a>\n});

就个人而言,我使用的是Template-Toolkit。

<a href="[% link.url %]">[% link.text %]</a>                # WRONG!
<a href="[% link.url | html %]">[% link.text | html %]</a>  # ok