Безопасность

Всем добрый вечер. Интересует вопрос безопасности при отправке данных пользователем через HTML форму. Форма генерится примерно так:


 <?php

    $form = $this->beginWidget('CActiveForm', array(

        'id' => 'server-form',

        // Please note: When you enable ajax validation, make sure the corresponding

        // controller action is handling ajax validation correctly.

        // There is a call to performAjaxValidation() commented in generated controller code.

        // See class documentation of CActiveForm for details on this.

        //'enableAjaxValidation'=>true,

        'enableClientValidation' => true,

        'clientOptions' => array(

            'validateOnSubmit' => true,

        ),

    ));

    ?>


    <p class="note">Fields with <span class="required">*</span> are required.</p>


        <?php echo $form->errorSummary($model); ?>


    <div class="row">

        <?php echo $form->labelEx($model, 'name'); ?>

<?php echo $form->textField($model, 'name', array('size' => 60, 'maxlength' => 150)); ?>

<?php echo $form->error($model, 'name'); ?>

    </div>

Ну и т.д. Интересует вопрос как защититься от недоброжелательных юзверей, которые захотят написать каку-нить гадость к примеру в текстовое поле. :blink:

Наверное, самый надежный способ это комбинация премодерации сообщений и регистрации пользователей. У них конечно же есть и свои минусы, тут, как и во всем, надо найти золотую середину между удобством и безопасностью.

Можно также прикрутить какой то вордфильтр, но любой такой фильтр при желании можно обойти, плюс он может резать и вполне безобидные слова.

Полностью автоматически от гадостей нельзя защитится ;)

Премодерация есть, но когда я вставляю что-то вроде


';alert(String.fromCharCode(88,83,83))//';alert(String.fromCharCode(88,83,83))//";

alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//--

></SCRIPT>">'><script>alert(String.fromCharCode(88,83,83))</SCRIPT>

При редактироваии в админке данной записи получаю alert с надписью XSS :blink:

Смотря что для Вас "гадость", если это теги то используйте фильтр для тектовых полей:




public function rules()

{

    array('text', 'filter', 'filter' => 'trim'),

    array('text', 'filter', 'filter' => 'strip_tags'),

}



или напишите свой

Огромное Вам спасибо, думаю это подойдет :) Не подскажите где можно найти описание всех правил фильтра ?

P.S: нашел статью, но при подключении получаю 500 ошибку http://www.yiiframework.com/wiki/67/xss-safe-model-content :blink:

Посмотрите также на это расширение: input.

Тут http://www.yiiframework.com/doc/api/1.1/CFilterValidator :)