2013-02-09 4 views
1

Недавно я закончил учебник о создании простого блога с помощью CakePHP - вот ссылка: http://book.cakephp.org/2.0/en/tutorials-and-examples/blog/part-two.html Создание формы проверки очень просто и быстро, но я заметил одну проблему с этим.Как сделать проверку CakePHP более безопасной?

Файл с именем post.ctp содержит:

echo $this->Form->create('Post'); 
    echo $this->Form->input('title'); 

И он создает форму для конечных пользователей с этим входом:

<input id="PostTitle" type="text" required="required" maxlength="50" name="data[Post][title]"> 

Кто-то, кто использует Firefox Firebug может изменить HTML-код перед отправкой формы от: name="data[Post][title]" до: name="data[Post][author]". Результатом этого будет обновление столбца с именем «автор», а не «title», а также возможность обновления базы данных с пустыми данными для «title».

В папке под названием «Модель» правило проверки в Post.php не предотвращает:

class Post extends AppModel { 

public $validate = array(
    'title' => array(
     'rule' => 'notEmpty' 
    ), 
    'body' => array(
     'rule' => 'notEmpty' 
    ) 
); 

} 

Как обеспечить мое заявление и не позволить кому-то обновить другие столбцы в базе данных?

ответ

3

Cake's security component содержит form tampering защит. Вам необходимо будет добавить компонент безопасности в ваш контроллер (ы):

public $components = array('Security'); 
+0

Спасибо. Он работает отлично. Я просто обновил строку в своих компонентах до 'public $ components = array ('Session', 'Security');' и больше ничего не нужно настраивать. Он работает при запуске. Когда я попытался сделать то же самое, я получил сообщение «Запрос был черным». Отлично. Они должны включать это в первый учебник, потому что это важно. – Lucas

2

Посмотрите на Model documentation. Есть по крайней мере два способа справиться с этим.

  1. Вы можете передать fieldlist в качестве третьего параметра при вызове save().
  2. Перед вызовом save() вы можете установить свойство модели whitelist.

Я еще не использовал это, но Security Component - это еще один вариант.

+0

Определенно использовать компонент безопасности. Прочтите ссылку на страницу руководства для получения дополнительной информации. – ADmad

 Смежные вопросы

  • Нет связанных вопросов^_^