|
Cake-PHP.ru Форум программистов CakePHP (на сайт)
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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 |
|
Вернуться к началу |
|
|
|
|
Вы можете начинать темы Вы можете отвечать на сообщения Вы можете редактировать свои сообщения Вы можете удалять свои сообщения Вы не можете голосовать в опросах
|
Powered by phpBB © 2001, 2005 phpBB Group Русская поддержка phpBB
|