Ошибка системы контроля FormApi для случая type= select свойство multiple без requered =true

Главные вкладки

Аватар пользователя Dеmimurych Dеmimurych 7 декабря 2010 в 14:18

Актуально только для 5 ветки.
6 такой ошибки не содержит.

<?php
$options 
= array(1,2,3);
$form['some_select'] = array(
    
'#type' => 'select',
        
'#multiple' => true,
    
'#required' => false,
         
'#options'=> $options
    
);
?>

при комбинации параметров multiple = true, requared=false, и type=select - FormApi drupal 5 работает неправильно и позволяет передать абсолютно любой параметр через запрос пост.
т.е. FromApi не контролирует переданное значение на предмет входит ли значение в изначальный массив параметров.

Где это может быть опасно
Модуль taxonomy, словарь позволяет выбрать несколько терминов, но при этом выбор не является обязательным. Злоумышленник может в таком случае присвоить ноде абсолютно любой тег из любого словаря существующего в системе.

Решение проблемы - иметь свою функцию валидации для элемента select.

Друпал 6 не подвержен.