[Moscow.pm] Чем лучше всего валидировать данные от пользователя?

Alexandr Gomoliako zzz на zzz.org.ua
Пт Апр 27 11:09:53 PDT 2012


> Validator::Custom не заточен вообще ни под что, на то он и Custom.
> Ежели вам не понятно, как его применить с Dancer, то, ну, печально это.

Насчитал в нем 5 абстракций в $rule и 5 в проверке на валидность, а
это только кусочек примера из SYNOPSIS. О каждой из них надо почитать,
часть из них вообще не описана, например не ясно как int проверяется,
влезит ли он в 32 бит или в 64 бит, знаковый или нет, в описании одно
слово - Integer.
Это слишком сложно для валидации. Большие шансы, что что-то пропустите
и будет как с Rails, уязвимость о которой никто не знает, но все вроде
как предупреждены.

Код из примера:

my $rule = [
  age => {message => 'age must be integer'} => [
    'not_blank',
    'int'
  ],
  name => {message => 'name must be string. the length 1 to 5'} => [
    'not_blank',
    {length => [1, 5]}
  ],
  price => [
    'not_blank',
    'int'
  ]
];

my $result = $vc->validate($data, $rule);

unless ($result->is_ok) {
  if ($result->has_missing) {
    my $missing_params = $result->missing_params;
  }

  if ($result->has_invalid) {
    my $messages = $result->messages_to_hash;
  }
}


Подробная информация о списке рассылки Moscow-pm