melomaniac
(Melomaniac2012)
June 18, 2013, 6:07pm
1
Всем добрый вечер. Интересует вопрос безопасности при отправке данных пользователем через 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>
Ну и т.д. Интересует вопрос как защититься от недоброжелательных юзверей, которые захотят написать каку-нить гадость к примеру в текстовое поле.
madand
(Dev Madand)
June 18, 2013, 6:48pm
2
Наверное, самый надежный способ это комбинация премодерации сообщений и регистрации пользователей. У них конечно же есть и свои минусы, тут, как и во всем, надо найти золотую середину между удобством и безопасностью.
Можно также прикрутить какой то вордфильтр, но любой такой фильтр при желании можно обойти, плюс он может резать и вполне безобидные слова.
Полностью автоматически от гадостей нельзя защитится
melomaniac
(Melomaniac2012)
June 18, 2013, 7:01pm
3
MadAnd:
Наверное, самый надежный способ это комбинация премодерации сообщений и регистрации пользователей. У них конечно же есть и свои минусы, тут, как и во всем, надо найти золотую середину между удобством и безопасностью.
Можно также прикрутить какой то вордфильтр, но любой такой фильтр при желании можно обойти, плюс он может резать и вполне безобидные слова.
Полностью автоматически от гадостей нельзя защитится
Премодерация есть, но когда я вставляю что-то вроде
';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
Смотря что для Вас "гадость", если это теги то используйте фильтр для тектовых полей:
public function rules()
{
array('text', 'filter', 'filter' => 'trim'),
array('text', 'filter', 'filter' => 'strip_tags'),
}
или напишите свой
melomaniac
(Melomaniac2012)
June 18, 2013, 7:34pm
5
Смотря что для Вас "гадость", если это теги то используйте фильтр для тектовых полей:
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
madand
(Dev Madand)
June 18, 2013, 8:20pm
6
Посмотрите также на это расширение: input.