1

我们使用 Apache 和 mod_perl 开发了一个开放的 Web API,您可以在其中传递由 Data::Dumper 创建的文本以发出请求。

我们的数据通常如下所示:

$VAR1 = {
    'OurField' => 'OurValue'
};

目前,我注意到我们正在使用 aneval将数据返回到 Perl 哈希服务器端:

my $VAR1;
eval $our_dumper_string;
#$VAR1 is now filled with hash value

问题在于,这是一个主要的安全问题。您可以在那里传递恶意的 perl 代码,它将在服务器端运行......

是否有更好的方法来安全地获取 Data::Dumper 字符串并将其转换为哈希?

4

2 回答 2

7

是的。使用 JSON::XS 并使用 JSON 而不是 Data::Dumper 格式。这与其他 Web API 更兼容

于 2011-07-21T13:31:35.160 回答
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 );

(这只是一个示例,不适用于整数或嵌套数据结构)

于 2011-07-21T14:01:17.427 回答