我不确定此代码有什么问题,我正在尝试从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);
答案 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