1

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 文字列を安全に取得してハッシュに変換するより良い方法はありますか?

4

2 に答える 2

7

はい。JSON::XS を使用し、Data::Dumper 形式ではなく JSON を使用します。これは、他の 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 に答える