我必须使用Perl在HTTP POST消息中将一堆字符串变量作为有效负载发送。
我想删除&#34;不安全&#34;字符,例如我的字符串变量中的< > “ ‘ % ; ) ( & +
。
我知道我可以使用正则表达式模式来查找和替换每个字符,但我想知道是否有任何现有的Perl库已经这样做了。
例如,我找到了Apache::Util
my $esc = Apache::Util::escape_uri($uri);
我可以使用Apache::Util::escape
吗?或者有更好的方法吗?
编辑1:我已经提到过,不安全,我指的是< > “ ‘ % ; ) ( & +
这样的字符,可以在SQL注入中使用。我不知道如何更好地描述这个问题。
编辑2:以下是我正在处理的代码 - 这是一个嵌入式perl代码:
$cgi = CGI->new();
my $param1 = $cgi->param('param1');
my $param2 = $cgi->param('param2');
my $param3 = $cgi->param('param3');
# I want to remove unsafe characters (< > “ ‘ % ; ) ( & +) from $param1, $param2 and $param3
# Q is, do I use Apache::Util::escape_uri; even if that's for removing unsafe chars from URI?
# OR do I use URI::Escape 'uri_escape';?
$script = <<__HTML__;
<script>
API.call ({
'paramA': '$param1',
'paramB': '$param2',
'paramC': '$param3'
});
</script>
__HTML__
编辑3:如果其他人有相同的问题,我最终编写了一个perl函数,用于查找某些字符,例如&#34;(&#34;,&#34; { &#34;,&#34; $&#34;,&#34;;&#34;等,并从提供的字符串参数中删除它们。
我要逃避的所有角色的列表是:
";", "(", ")", "[", "]", "{", "}", "~", "`", "/", "<", ">", "&", "|", "'", "\"", "\\"
显然,也有排除的空间。
答案 0 :(得分:1)
不安全字符没有一般定义,因此您需要确定是否有任何答案符合您的要求
看the source of Apache::Util
它会给自己的名字空间带来一些非常不愉快的事情,我不会相信它。它旨在用作mod_perl
的组件,不应单独访问
我认为转义HTTP URI的规范方法是使用URI::Escape
模块
use URI::Escape 'uri_escape';
除了此
之外,您必须提供更多帮助的数据和代码