CakePHP скрытые поля редактирования - PullRequest
0 голосов
/ 24 января 2012

Я только начал использовать фреймворк CakePHP, точнее 2.0.Я прочитал большую часть документации и примеров и наткнулся на учебник блога.

http://book.cakephp.org/2.0/en/tutorials-and-examples/blog/part-two.html#editing-posts В разделе учебника "редактировать пост" я увидел, что они используют скрытое поле для запоминания идентификатора поста.Разве это не плохая практика из-за модификаций на стороне клиента?

Способ, которым я обработал это, удаляет скрытое поле, и когда форма отправляется, добавьте идентификатор записи в данные POST перед сохранением и проверкой.Это правильный способ сделать это?

Ответы [ 3 ]

1 голос
/ 24 января 2012

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

Подробнее об этом здесь: http://www.dereuromark.de/2010/09/21/saving-model-data-and-security/

1 голос
/ 30 августа 2013

SecurityComponent поможет со скрытыми полями. Он будет черной дырой любой запрос, который он обнаружит, содержит несанкционированный доступ со скрытыми входами, но он ничего не сделает для выпадающих входов. Вы можете взломать некоторую форму AddUser, открытую в firebug, и добавить опцию:

<option value="superadmin">SuperAdmin</option>

В раскрывающемся списке «Роль» выберите его в форме, и после отправки CakePHP создаст нового SuperAdmin. Таким образом, лучшая политика по-прежнему не доверять клиенту. Клиент - это стая лесных волков, а ваш сервер - кладка кроликов-кроликов. Держите эти два отдельно.

0 голосов
/ 24 января 2012

Все, что вам нужно сделать, это добавить SecurityComponent в вашу переменную AppController :: $ components, чтобы предотвратить изменение клиентом скрытых полей.

...