Yii CActiveForm автоматически очищает ввод пользователя? - PullRequest
3 голосов
/ 06 октября 2011

У меня есть базовая Yii CActiveForm, которую я использую для сбора информации от пользователей, которая затем вставляется в базу данных [править] с помощью моделей Yii ActiveRecord по умолчанию [/ edit]. Как и любой, я хочу убедиться, что умный пользователь не удалит мою базу данных через одно из этих полей.

Вопрос заключается в следующем: выполняет ли Yii CActiveForm автоматическую очистку ввода, прежде чем он сможет совершить что-либо вредоносное? Я не могу найти документацию по этому вопросу. Не уверен, нужно ли мне тратить на это время или об этом уже позаботились.

Спасибо!

Ответы [ 3 ]

6 голосов
/ 06 октября 2011

Когда вы говорите «CActiveForm», я предполагаю, что вы имеете в виду использование сгенерированных Yii моделей и контроллеров. CActiveForm автоматически не выполняет никакую очистку для вас, но если вы используете методы ActiveRecord, которые Yii использует по умолчанию, он обычно выполняет привязки PDO для вас на основе типов данных каждого поля. Если вы создаете свои собственные запросы, используя createCommand () или другой метод, вы должны определить свои собственные привязки .

Если вы хотите увидеть, что происходит, вы можете включить ведение журнала , например, чтобы сгенерировать файл с помощью команд db, добавьте его в файл конфигурации в массиве component-> log:

'components'=>array(
 'log'=>array(
  'class'=>'CLogRouter',
    'routes'=>array(    
      array(
        'class'=>'CFileLogRoute',
        'levels'=>'trace, info',
        'categories'=>'system.db.*',
        'logFile'=>'db.log',
      ),
     ...

и если вы видите параметризованные операторы обновления, вы можете быть почти уверены, что они используют привязки PDO , что предотвратит большинство, но не обязательно, все атаки SQL. (По умолчанию файл журнала сохраняется в каталоге «времени выполнения», который затем можно отследить. Вы также можете отобразить его внизу веб-страницы или в FireBug с помощью CWebLogRoute , но это не произойдет. покажет все команды, если страница будет перенаправлена.)

3 голосов
/ 06 октября 2011

CActiveForm не автоматически не выполняет никакую очистку пользовательского ввода. Тем не менее, некоторые подробности о безопасности Yii:

Безопасность межсайтовых сценариев (XSS):

Пост Yii Guide о его функциях безопасности:

http://www.yiiframework.com/doc/guide/1.1/en/topics.security

Подводя итог приведенной выше ссылке, вы можете довольно легко включить фильтр CHtmlPurifier для очистки пользовательского ввода до того, как сработает ваше действие, , но это не поведение по умолчанию .

В Yii также есть некоторые функции, которые можно включить для проверки файлов cookie и предотвращения подделки межсайтовых запросов, также упоминаемой в ссылке.

Безопасность базы данных:

Что касается вашего беспокойства по поводу удаления пользователем базы данных, если вы используете стандартные объекты доступа к данным Yii (например, CActiveRecord) и MySql, то привязки PDO , используемые для сохранения данных, должны предотвращать атаки с внедрением SQL-кода 1-го порядка. .

0 голосов
/ 13 декабря 2013

Yii не обеспечивает функцию очистки входных данных. Компонент CHtmlPurifier используется для очистки данных, отображаемых для конечных пользователей.

Вы можете использовать функцию PHP filter_input () напрямую (http://us3.php.net/m...ilter-input.php), если вы хотите очистить входные данные.

Я получаю эти ответы по ссылке ниже

http://www.yiiframework.com/forum/index.php/topic/1041-how-to-sanitize-post/

...