Каков наилучший способ избежать пользовательского вывода с Zend Framework? - PullRequest
0 голосов
/ 03 февраля 2009

Я немного озадачен тем, что я должен использовать, чтобы избежать вывода пользователя.

Во-первых, есть класс Zend_Filter_Input, который выглядит так, как будто он может делать то, что я хочу, но, похоже, ориентирован на пакетную фильтрацию множества элементов. На данный момент я хочу только один фильтр. Также меня немного смущает определение escaps по сравнению с фильтрами. В чем разница между фильтром StringTrim и эскапером?

Есть ли лучшее решение для экранирования отдельных элементов?

Ответы [ 3 ]

5 голосов
/ 03 февраля 2009

Фильтры отлично подходят для ваших форм, так что вы можете очистить и нормализовать ваши данные перед их обработкой / хранением. Вы упомянули StringTrim - у вас есть другие, которые обеспечивают использование заглавных букв, или что ваш ввод является числовым (или буквенно-цифровым, или ...). Обратите внимание, что это необходимо для обеспечения согласованности и здравомыслия в ваших данных, а не для предотвращения внедрения SQL-кода. Библиотеки баз данных ZF рассматривают это как отдельную проблему.

С другой стороны, вы можете избежать вещей для вывода. Хотя «x <5» или «PB & J» могут быть совершенно правильными данными для хранения и обработки в вашей системе, они могут вызвать проблемы при отображении на веб-странице. Вот почему вы обычно используете <code>htmlspecialchars() или htmlentities() - по умолчанию Zend_View использует htmlspecialchar (), когда вы $this->escape($foo).

1 голос
/ 03 февраля 2009

Использование htmlspecialchars () ?

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

0 голосов
/ 04 февраля 2009

Если вы беспокоитесь о безопасности и хотите автоматически экранировать все переменные, аналогичные тем, что делает Django, тогда вам может быть интересна эта статья.

Как автоматически экранировать переменные шаблона в Zend_View

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...