Веб-API Perl с использованием Data :: Dumper - PullRequest
1 голос
/ 21 июля 2011

Мы разработали открытый веб-API с использованием Apache и mod_perl, где вы можете передавать текст, созданный Data :: Dumper, для выполнения запросов.

Наши данные обычно выглядят так:

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

В настоящее время я заметил, что мы используем eval для возврата данных на сторону хеш-сервера Perl:

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

Проблема в том, что это серьезная проблема безопасности.Вы можете передать туда вредоносный Perl-код, и он будет работать на стороне сервера ...

Это лучший способ безопасно взять строку Data :: Dumper и превратить ее в хеш?

Ответы [ 2 ]

7 голосов
/ 21 июля 2011

Да.Используйте JSON :: XS и используйте JSON, а не формат Data :: Dumper.Это гораздо более совместимо с другими веб-API

0 голосов
/ 21 июля 2011

Если ваши данные просты и предсказуемы, вы можете даже попытаться написать простой «парсер» для считывания значений в стриктуре данных

#!/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 );

(это только пример и не будет работать с целыми числамиили вложенные структуры данных)

...