Экранированные входные данные в Zend_Framework - PullRequest
0 голосов
/ 27 марта 2012

Добрый день!

Я хочу защитить свою базу данных при сохранении строки в Zend_Framework:

function addController() {
....   
  if ($form->isValid($_POST)) {
   addRecods($form->getValues());
  }
}

class DbManager extends Zend_Db_Table_Abstract
...
function addRecords(array $array) {
   $row = $this->createRow();
   $row->field1 = $this->field_from_form1;
   $row->field2 = $this->field_from_form2;
   ....
   $row->save(); 
}

Как мне лучше избежать ввода данных из массива вaddRecords функция?

Спасибо!

Ответы [ 2 ]

1 голос
/ 27 марта 2012

Функция Zend_Db_Table_Row::save(), внутренне использует функцию Zend_Db_Adapter_Abstract::insert() для сохранения данных.Что, в свою очередь, приводит данные для вас.

Если вам нужно создать собственные sql-запросы, классы Zend_Db_Adapter предоставляют вам несколько функций цитирования.Подробнее о них можно прочитать здесь: Цитирование значений и идентификаторов

0 голосов
/ 27 марта 2012

Насколько я понимаю, вы делаете это правильно. Если ваша форма создана с использованием Zend_Form, вы можете добавить filters и validators к элементам формы.

Каждый созданный мною элемент автоматически получает фильтры StripTags (удаление тегов HTML) и StringTrim (удаление ненужных пробелов). StripTags необходимо настроить для принятия определенных тегов и атрибутов, если вам нужно разрешить HTML.

Кроме того, использование валидаторов позволит захватить большую часть вредоносного контента. Если у вас есть переключатели с числовыми значениями, вы можете добавить валидатор Digit. Для строк Alnum, кажется, дает мне странные результаты со строками с ударением (utf8), но если вы ожидаете базового ASCII, это может быть занявший второе место

Использование Zend_Form::isValid() проверит, все ли validators в порядке, а использование Zend_Form::getValues() автоматически активирует все входные данные filters. Поскольку вы уже делаете это, возможно, вам просто нужно добавить правильные filters и validators.

Использование инструментов БД Zend Framework сделает остальную часть безопасного запроса, чтобы избежать проблем с кавычками

...