我们使用Apache和mod_perl开发了一个开放的Web API,您可以在其中传递Data :: Dumper创建的文本来发出请求。
我们的数据通常如下所示:
$VAR1 = {
'OurField' => 'OurValue'
};
目前,我注意到我们正在使用eval
将数据恢复到Perl哈希服务器端:
my $VAR1;
eval $our_dumper_string;
#$VAR1 is now filled with hash value
这个问题,是一个重大的安全问题。您可以在那里传递恶意perl代码,它将运行服务器端...
有一种更好的方法可以安全地获取Data :: Dumper字符串并将其转换为哈希值吗?
答案 0 :(得分:7)
是。使用JSON :: XS并使用JSON而不是Data :: Dumper格式。这与其他Web API更加兼容
答案 1 :(得分:0)
如果您的数据简单且可预测,您甚至可以尝试编写一个简单的“解析器”来回读数据限制中的值
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my $data = { 'key1' => 'value' };
my $dumper = Dumper($data);
print $dumper;
my $data_2;
while( $dumper =~ /(.+)$/mg) {
if ( $1 =~ m/'(.*)' => '(.*)'/ ) {
$data_2->{$1} = $2;
}
}
print Dumper( $data_2 );
(这只是一个例子,不适用于整数或嵌套数据结构)