Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Защита полей модели

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
Bes
Гость
цитировать






СообщениеДобавлено: 02 Дек 2008 22:19:49    Заголовок сообщения: Защита полей модели Ответить с цитатой Изменить/удалить это сообщение

Допустим, есть модель хранящая некий user generated content (пост в форуме, коммент в блоге, объявление и т.п.). Путь модель называется Post. Каждая новая запись просматривается и одобряется администратором. Модель имеет поле status, принимающее значение pending, approved или rejected. Допустим, согласно логике приложения автор в любой момент может редактировать запись. При помощи нехитрых манипуляций автор может добавить в форму редактирования поле data[Post][status] со значением approved или любым другим и при сохранении данных обычным $this->Post->save($this->data) в контроллере, поле status будет изменено.

Существует ли штатная возможность защитить поля модели от изменения подобным образом, как в рельсах, например?

На данный момент лучшим решением мне кажется автоматическое удаление защищённых полей из массива controller->data в beforeFilter.
Другие идеи?
Вернуться к началу
bunyan

цитировать



Зарегистрирован: 15 Ноя 2007 14:57:37
Сообщения: 17

СообщениеДобавлено: 03 Дек 2008 15:26:58    Заголовок сообщения: Ответить с цитатой

Есть параметр whitelist у метода save(), третий, по-моему. В нем можно указать поля, разрешенные для сохранения.
_________________
Блог о CakePHP
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Bes
Гость
цитировать






СообщениеДобавлено: 03 Дек 2008 22:20:16    Заголовок сообщения: Ответить с цитатой Изменить/удалить это сообщение

Спасибо.
Мне, правда, собственное решение нравится больше — удобнее один раз в модели описать запрещённые поля, чем в каждом сейве разрешённые. И, хотя это чревато муторным дебагом, всё же, буду спокоен, что по умолчанию уязвимость закрыта.
Ну и штатное решение тоже буду применять теперь.
Вернуться к началу
bunyan

цитировать



Зарегистрирован: 15 Ноя 2007 14:57:37
Сообщения: 17

СообщениеДобавлено: 04 Дек 2008 03:00:49    Заголовок сообщения: Ответить с цитатой

Есть еще свойство whitelist у модели. Можно указать в нем разрешенные поля "в общем", а whitelist-ом метода save() пользоваться в случаях, когда нужно указать другой набор полей.
_________________
Блог о CakePHP
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru